call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] )
调用第一个参数所提供的用户自定义的函数。
返回值:返回调用函数的结果,或FALSE。
example :
<?php function eat($fruit) //参数可以为多个 { echo "You want to eat $fruit, no problem"; } call_user_func('eat', "apple"); //print: You want to eat apple, no problem; call_user_func('eat', "orange"); //print: You want to eat orange,no problem; ?>
调用类的内部方法:
<?php class myclass { function say_hello($name) { echo "Hello!$name"; } } $classname = "myclass"; //调用类内部的函数需要使用数组方式 array(类名,方法名) call_user_func(array($classname, 'say_hello'), 'dain_sun'); //print Hello! dain_sun ?>
call_user_func_array 函数和 call_user_func 很相似,只是 使 用了数组 的传递参数形式,让参数的结构更清晰:
call_user_func_array ( callback $function , array $param_arr )
调用用户定义的函数,参数为数组形式。
返回值:返回调用函数的结果,或FALSE。
<?php function debug($var, $val) { echo "variable: $var <br> value: $val <br>"; echo "<hr>"; } $host = $_SERVER["SERVER_NAME"]; $file = $_SERVER["PHP_SELF"]; call_user_func_array('debug', array("host", $host)); call_user_func_array('debug', array("file", $file)); ?>
调用类的内部方法和 call_user_func 函数的调用方式一样,都是使用了数组的形式来调用。
exmaple:
<?php class test { function debug($var, $val) { echo "variable: $var <br> value: $val <br>"; echo "<hr>"; } } $host = $_SERVER["SERVER_NAME"]; $file = $_SERVER["PHP_SELF"]; call_user_func_array(array('test', 'debug'), array("host", $host)); call_user_func_array(array('test', 'debug'), array("file", $file)); ?>
注:call_user_func 函数和call_user_func_array函数都支持引用。
<?php function increment(&$var) { $var++; } $a = 0; call_user_func('increment', $a); echo $a; // 0 call_user_func_array('increment', array(&$a)); // You can use this instead echo $a; // 1 ?>