2011-08-22 4 views
5

몇 달 전에 static 메서드가 호출 될 때마다 호출되는 PHP 함수에 대해 읽었습니다. 클래스 인스턴스가 인스턴스화 될 때 호출되는 __construct 함수와 비슷합니다. 그러나, 나는 PHP에서이 기능을 처리하는 기능을 찾지 못하는 것 같습니다. 그런 기능이 있습니까?PHP의 정적 메서드 대신 생성자 대체

답변

6

는이 같은 것을 __callStatic()으로 재생하고 수행 할 수 있습니다

class testObj { 
    public function __construct() { 

    } 

    public static function __callStatic($name, $arguments) { 
    $name = substr($name, 1); 

    if(method_exists("testObj", $name)) { 
     echo "Calling static method '$name'<br/>"; 

     /** 
     * You can write here any code you want to be run 
     * before a static method is called 
     */ 

     call_user_func_array(array("testObj", $name), $arguments); 
    } 
    } 

    static public function test($n) { 
    echo "n * n = " . ($n * $n); 
    } 
} 

/** 
* This will go through the static 'constructor' and then call the method 
*/ 
testObj::_test(20); 

/** 
* This will go directly to the method 
*/ 
testObj::test(20); 

이 코드를 첫 번째 '_'실행 정적 '생성자'앞에는 어떤 방법을 사용. 이것은 단지 기본적인 예일 뿐이지 만 __callStatic을 사용할 수 있지만 더 잘 작동합니다.

행운을 빈다.

+0

그것은 내가 원하는 바가 아니지만 그것이 내가 찾는 것에 가장 가깝다고 생각합니다. 고마워, 아디. –

+0

문제 없습니다, 도와줬으면합니다. –

3

__callStatic()가 호출되지 : 난 그냥 PHP 매뉴얼이 발견 매번 당신은 클래스의 기존 정적 메서드를 호출하지 않습니다.

+0

필자는 PHP 매뉴얼에서이 메소드를 다소 오래 전에 발견했지만, 언급하지 않았지만 존재하지 않는 정적 메소드가 호출 될 때만 호출됩니다. –