문제
나는 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
제휴하지 않습니다 StackOverflow