Передача массива в 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');