PHP中有两个函数,分别为call_user_func和call_user_func_array,这两个函数都可以用来调用用户定义的函数,具体来说,就是可以执行一个字符串所表示的函数名。
1. call_user_func函数
call_user_func函数的格式如下:
call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed
其中$callback参数表示用户定义的函数名或者方法名,$parameter表示传递给函数的参数,可以有多个参数,
首先,需要定义一个简单的函数:
function greet($name) {
echo "Hello, $name!";
}
然后,用call_user_func函数调用这个函数:
call_user_func('greet', 'World');
输出结果为:
Hello, World!
这是一个简单的例子,但是call_user_func函数并没有什么特别之处。它的主要优点在于调用对象方法。
假设有一个对象:
class Greeting {
public function sayHello($name) {
echo "Hello, $name!";
}
}
可以用以下代码来调用sayHello方法:
$greeting = new Greeting();
call_user_func([$greeting, 'sayHello'], 'World');
输出结果为:
Hello, World!
2. call_user_func_array函数
call_user_func_array同样是用来调用用户定义的函数或方法。它的用法与call_user_func类似,不同之处在于$parameter参数的形式。在call_user_func函数中,所有的参数都必须一个一个地传递,而在call_user_func_array函数中,可以传递一个数组形式的参数,数组中的每个元素都将被当作函数参数传递给函数。
call_user_func_array函数的格式如下:
call_user_func_array ( callable $callback , array $param_arr ) : mixed
同样需要定义一个简单的函数:
function greet2($name1,$name2) {
echo "Hello, $name1 and $name2!";
}
可以通过以下代码来调用greet2函数:
call_user_func_array('greet2',['John','Jack']);
输出的结果为:
Hello, John and Jack!