我无法理解call_user_func
的PHP手册,尤其是参数说明:
要调用的函数。通过将
array($classname, $methodname)
传递给此参数,类方法也可以使用此函数 静态调用 。
示例:使用类方法
<?php
class myclass {
function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
?>
另外请解释一下这段代码“call_user_func(array($ classname,'say_hello'))”。当然array($classname, 'say_hello')
不是方法名称。
答案 0 :(得分: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');