php之call_user_func_array的简易用法 今天在群里面,有个叫lewis的在问call_user_func_array的用法,因为之前一直没有用过,也不能说什么,于是看一下手册,发现是这么写的: call_user_func_array (PHP 4 >= 4.0.4, PHP 5) call_user_func_array -- Call a user function given with an array of parametersDescription mixed call_user_func_array ( callback function, array param_arr ) Call a user defined function given by function, with the parameters in param_arr. 然后还有一个例子: 复制代码 代码如下: <?php function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2
"; } class foo { function bar($arg, $arg2) { echo __METHOD__, " got $arg and $arg2
"; } } // 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")); ?>
以上例程的输出类似于: foobar got one and two foo::bar got three and four Example #2 call_user_func_array() using namespace name 复制代码 代码如下: <?php namespace Foobar; class Foo { static public function test($name) { print "Hello {$name}!
"; } } // As of PHP 5.3.0 call_user_func_array(__NAMESPACE__ ."Foo::test", array("Hannes")); // As of PHP 5.3.0 call_user_func_array(array(__NAMESPACE__ ."Foo", "test"), array("Philip")); ?>
以上例程的输出类似于: Hello Hannes! Hello Philip! Example #3 Using lambda function 复制代码 代码如下: <?php $func = function($arg1, $arg2) { return $arg1 * $arg2; }; var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */ ?>