Не знаю как точно назвать тему. Вот суть проблеммы. Есть класс A: PHP: class A { static function draw() { print 'Привет, МИР!'; } } Класс B: PHP: class B { static function draw() { print 'Пока, МИР!'; } } Как видите оба класса состоят и статических методов. Теперь возьмём класс C: PHP: <?php class C { private $class; function __construct($cn) { if ($cn == 'A') $this->class = /* Вот что тут написать? */; elseif ($cn == 'B') $this->class = /* Вот что тут написать? */; } function write() { //Вот что я хочу ;-) $this->class::draw(); } } ?> В комментах то, что я хочу
мммм... не уверен насчет передачи методов так.... врать не буду. Сам делаю обычно так: Создаю экземпляр нужного обьекта, передаю главному обьекту ссылку на него, и он его юзает. т.е. PHP: <?php $b = new B; class C { private $class; function __construct(&$cn) { $this->class = $cn; } function write() { //Вот что я хочу $this->class->draw(); } } $c = new C($b); ?>
Насколько я знаю статические методы надо вызывать с помошью call_user_func: PHP: <?php $class = "DB"; call_user_func (array ($class, "__construct"), $args);