Pergunta

Estou em PHP e eu preciso acessar um método estático de um objeto cujo nome deve mudar.

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

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

Este código anterior está me dando "Erro de sintaxe inesperado ::".
escrita Eu também tentei {$ nomControlleur} :: singleton (); mas ele está me dando ainda mais erros, muito obrigado pela sua ajuda.

Bolas de aço

Foi útil?

Solução

Use:

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

ou (5.2.3+ apenas)

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

Outras dicas

E

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

?

Eu penso agora em PHP 5.3 também há PHP __callStatic() como havia __call().

Então você pode definir __callStatic() e indefinida chamada de método estático vai bater este método.

Por favor, verifique aqui para mais detalhes e uso.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top