PHP call_user_func 与仅调用函数

2022-08-30 07:47:23

我相信对此有一个非常简单的解释。这有什么区别:

function barber($type){
    echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");

...和这个(有什么好处?

function barber($type){
    echo "You wanted a $type haircut, no problem\n";
}
barber('mushroom');
barber('shave');

答案 1

始终在知道实际函数名称时使用它。

call_user_func用于调用您事先不知道其名称的函数,但由于程序必须在运行时查找函数,因此效率要低得多。


答案 2

尽管您可以通过这种方式调用变量函数名称:

function printIt($str) { print($str); }

$funcname = 'printIt';
$funcname('Hello world!');

在某些情况下,您不知道要传递多少个参数。请考虑以下事项:

function someFunc() {
  $args = func_get_args();
  // do something
}

call_user_func_array('someFunc',array('one','two','three'));

它还可以分别调用静态方法和对象方法:

call_user_func(array('someClass','someFunc'),$arg);
call_user_func(array($myObj,'someFunc'),$arg);

推荐