2012-03-11 70 views
0

的定義,意味着我有問題要了解PHP手冊call_user_func,尤其是參數說明:什麼是靜態調用在call_user_func

的函數被調用。類方法也可以是靜態調用使用此函數將array($classname, $methodname)傳遞給此參數。

示例:使用一個類方法

<?php 
class myclass { 
    function say_hello() 
    { 
     echo "Hello!\n"; 
    } 
} 

$classname = "myclass"; 

call_user_func(array($classname, 'say_hello')); 
?> 

也請解釋這個代碼行 「call_user_func(陣列($類名, 'say_hello'))」。當然array($classname, 'say_hello')不是方法名稱。

+0

能否請您分享您引用該文本的手冊頁的鏈接? – hakre 2012-03-11 16:39:10

回答

1

將數組傳遞給call_user_func是調用靜態和非靜態類方法的特例。在你給的例子,你可以這樣做:

<?php 
class myclass { 
    public function say_hello() 
    { 
     echo "Hello!\n"; 
    } 

    public static function say_hello_static() { 
     echo "Hello static!\n"; 
    } 
} 

//Call static method 
call_user_func(array('myclass','say_hello_static')); 

//Call object method 
$myobject = new myclass(); 
call_user_func(array($myobject,'say_hello')); 
?> 

由於PHP 5.2.3您可以通過使用一個字符串調用靜態方法,而不是數組,如:

call_user_func('myclass::say_hello_static');