2009-09-19 3 views
0

Я нахожусь в PHP, и мне нужно получить доступ к статическому методу объекта, имя которого должно измениться.PHP собственный статический метод доступа

private $controlleur = null; 
    private static $instance = null; 

    private function __construct() { 
    $nomControlleur = "Controlleurs\_" . Session::singleton()->controlleur; 
    $this->controlleur = $nomControlleur::singleton(); 
    } 

Этот предшествующий код дает мне «Ошибка синтаксиса неожиданно ::».
Я также пробовал писать {$ nomControlleur} :: singleton(); но это дает мне еще больше ошибок, благодарит за вашу помощь.

Шары из стали

ответ

2

Использование:

$this->controlleur = call_user_func(array($nomControlleur, 'singleton')); 

или (5.2.3+ только)

$this->controlleur = call_user_func($nomControlleur . '::singleton'); 
0

насчет

$staticCall = $nonController."::singleton()"; 
$staticCall(); 

?

+0

Спасибо, почти что, но я найти его с вашим комментарием. Просто потяните() в singleton() beacause, когда вы его вызываете, он дает singleton()(); – malavv

0

Я думаю, что теперь в PHP 5.3 есть также PHP __callStatic() как там было __call().

Таким образом, вы можете определить __callStatic(), а вызов неопределенного статического метода ударит по этому методу.

Для получения более подробной информации и использования продукции, пожалуйста, ознакомьтесь с условиями участия.

http://www.php.net/manual/en/language.oop5.overloading.php#object.callstatic

Смежные вопросы