Доступ к пользовательскому статическому методу PHP - PullRequest
0 голосов
/ 19 сентября 2009

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

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

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

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

Шарики из стали

Ответы [ 3 ]

2 голосов
/ 20 сентября 2009

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

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

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

$this->controlleur = call_user_func($nomControlleur . '::singleton');
0 голосов
/ 20 декабря 2013

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

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

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

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

0 голосов
/ 20 сентября 2009

А как же

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

...