2010-08-11 3 views
2

PHP에서 magic function __call()은 클래스에서 사용됩니다. 유사한 마법 함수가 있지만 함수 대신 있습니까? __autoload()는 함수 용입니다. 이함수에 대한 매직 함수 __call()?

function __call($name, $arguments) { 
    echo "Function $name says {$arguments[0]} "; 
} 
random_func("hello"); 

답변

3

아니 같은

예를 들어 뭔가, 나는 그런 마법 기능이있는 생각하지 않습니다. 이것에 대한

한 가지 해결 방법은 정적 클래스로 기능을 넣어, 그 클래스에 __callStatic 마법 방법을 추가하는 것입니다 (> PHP 5.3 만, 난 두려워) : PHP <를 들어

class Func 
{ 
    /** As of PHP 5.3.0 */ 
    public static function __callStatic($name, $arguments) 
    { 
    // Note: value of $name is case sensitive. 
    echo "Calling static method '$name' " 
     . implode(', ', $arguments). "\n"; 

    } 
} 

Func::random_func("hello!"); 

5.3에서도 같은 일을 할 수 있지만 객체를 인스턴스화하고 __call 마법 메서드를 사용해야합니다. 치명적인 오류 것이다 항상 결과를 존재하지 않는 함수를 호출

$Func = new Func; 
$Func->random_func("hello!"); 
3

번호.

** 아마도 zend 확장 프로그램이 fcall_begin_handler으로이를 가로 채기는하지만 확실하지 않습니다.

관련 문제