php function call_user_func_array
class Foo { static public function test($name) { print "Hello {$name}!\n"; } public function bar($name) { print "Hello {$name}\n"; }}// call static Class methods.call_user_func_array('Foo::test', array('Hannes'));// Hello Hannes!call_user_func_array(array('Foo', 'test'), array('Philip'));// Hello Philip!$foo = new Foo();// call object instance methods.call_user_func_array(array($foo, 'bar'), array('World!'));call_user_func_array(array($foo, 'bar'), 'World!');// Hello World! |
参考php手册
callback有些诸如call_user_function()或usort()的函数接受用户自定义的函数作为一个参数。
callback函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。
一个php函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了 array(), echo(), empty(), eval(), exit(), isset(), list(), print()和unset()。
一个对象的方法以数组的形式来传递,数组的下标0指明对象名,下标1指明方法名。对于没有实例化为对象的静态类,要传递其方法,将数组0下标指明的对象名换成该类的名称即可。