PHP call_user_func_array function 处理函数
-
定义和用法
call_user_func_array - 调用回调函数,并把一个数组参数作为回调函数的参数 -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 5.3.0 对面向对象里面的关键字的解析有所增强。在此之前,使用两个冒号来连接一个类和里面的一个方法,把它作为参数来作为回调函数的话,将会发出一个E_STRICT的警告,因为这个传入的参数被视为静态方法。
注意 PHP 5.4之前,如果param_arr里面的参数是引用传值,那么不管原函数默认的各个参数是不是引用传值,都会以引用方式传入到回调函数。虽然以引用传值这种方式来传递参数给回调函数,不会发出不支持的警告,但是不管怎么说,这样做还是不被支持的。并且在PHP 5.4里面被去掉了。而且,这也不适用于内部函数,如果使用函数签名设置,则必须接受该函数签名。如果调用函数签名设置需要接受的参数是引用传递的时候,按值传递,结果将会输出一个警告。call_user_func()将返回FALSE(但是,对于 传递了带有引用计数= 1的值(例如在文字中),因为这些值可以被转换为引用,而不会产生不良影响-但也不会写入对该值具有任何影响的引用- 但是,不要依赖此行为,因为引用计数是实现细节,并且此行为的合理性值得怀疑。
注意 在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。
-
语法
call_user_func_array( callable $callback , array $param_arr )
call_user_func_array() 把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。 -
参数
参数 必需的 描述 callback 是 被调用的回调函数。 param_arr 是 要被传入回调函数的数组,这个数组得是索引数组。 -
返回值
返回回调函数的结果。如果出错的话就返回FALSE -
示例
尝试一下function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2<br/>"; } class foo { function bar($arg, $arg2) { echo __METHOD__, " got $arg and $arg2<br/>"; } } // Call the foobar() function with 2 arguments call_user_func_array("foobar", array("one", "two")); // Call the $foo->bar() method with 2 arguments $foo = new foo; call_user_func_array(array($foo, "bar"), array("three", "four"));
-
相关页面
call_user_func() - 把第一个参数作为回调函数调用ReflectionFunction::invokeArgs() - 调用函数参数ReflectionMethod::invokeArgs() - 带参数执行