mixed call_user_func ( callable $callback
[, mixed $parameter
[, mixed $...
]] )
调用第一个参数$callback,$callback为用户自定义方法,同时可选的向该方法传递任意多个$callback方法可接受的参数$parameter
该方法会返回$callback方法的返回值,或者执行失败时返回false
1 <?php 2 error_reporting(E_ALL); 3 function increment(&$var) 4 { 5 $var++; 6 } 7 8 $a = 0; 9 call_user_func('increment', $a); 10 echo $a."\n"; 11 12 call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3 13 echo $a."\n"; 14 /** 15 结果 16 0 17 1 18 */ 19 ?>
1 <?php 2 3 namespace Foobar; 4 5 class Foo { 6 static public function test() { 7 print "Hello world!\n"; 8 } 9 } 10 11 call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0 12 call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0 13 14 /** 15 Hello world! 16 Hello world! 17 */ 18 ?>
该函数第一个参数也可以是数组形式,数组第一个元素为$callback所在累,第二个元素为$callback
1 <?php 2 class myclass { 3 function say_hello($name) 4 { 5 echo "Hello!$name"; 6 } 7 } 8 9 $classname = "myclass"; 10 11 //调用类内部的函数需要使用数组方式 array(类名,方法名) 12 call_user_func(array($classname, 'say_hello'), 'dain_sun'); 13 14 //print Hello! dain_sun 15 16 ?>
call_user_func_array 函数和 call_user_func 很相似,只是 使用了数组 的传递参数形式,让参数的结构更清晰:
call_user_func_array ( callback $function , array $param_arr )
调用用户定义的函数,参数为数组形式。
返回值:返回调用函数的结果,或FALSE。
1 <?php 2 3 function debug($var, $val) 4 { 5 echo "variable: $var <br> value: $val <br>"; 6 echo "<hr>"; 7 } 8 9 10 $host = $_SERVER["SERVER_NAME"]; 11 $file = $_SERVER["PHP_SELF"]; 12 13 call_user_func_array('debug', array("host", $host)); 14 call_user_func_array('debug', array("file", $file)); 15 16 17 ?>