문제

나는 PHP에 있고 이름이 변경되어야하는 객체의 정적 메소드에 액세스해야합니다.

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

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

이 앞의 코드는 "구문 오류 예기치 않은 ::"를 제공합니다.
또한 {$ nomControlleur} :: Singleton ()을 작성하려고했습니다. 그러나 그것은 나에게 더 많은 오류를주고 있습니다. 당신의 도움에 감사드립니다.

강철 공

도움이 되었습니까?

해결책

사용:

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

또는 (5.2.3+ 만)

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

다른 팁

는 어때

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

?

지금 PHP 5.3에 PHP도 있다고 생각합니다. __callStatic() 만큼 __call().

그래서 당신은 정의 할 수 있습니다 __callStatic() 정의되지 않은 정적 메소드 호출은이 메소드에 해당됩니다.

자세한 내용과 사용법은 여기를 확인하십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top