在PHP中调用用户函数vs变量变量

在PHP中调用用户函数vs变量变量,php,Php,call_user_func和使用变量之间是否存在显著差异 以这样一个类为例: class someClass{ protected function action_this() { ... } protected function action_that() { ... } } 这是更好还是更有效 class myClass extends someClass{ public function doAction($action='this'){

call_user_func和使用变量之间是否存在显著差异

以这样一个类为例:

class someClass{

    protected function action_this() { ... }
    protected function action_that() { ... }

}
这是更好还是更有效

class myClass extends someClass{

    public function doAction($action='this'){
        $method="action_{$action}";
        if(is_callable (array($this,$method)) ){
            call_user_func(array($this,$method));
        }
    }

}


是否存在一种情况比另一种更可取?

您的示例不够清晰

通常,最好有一些可理解的代码:

$callback = array($this, $method):

if (is_callable($callback)) {
    call_user_func($callback);
}
但是,根据口味,您可能更喜欢:

if (is_callable($callback)) {
    $callback();
}
我不喜欢这一个而喜欢另一个,但要买一个有效的


也就是说,在这种情况下,我会尽量不使用魔法,我个人更喜欢通过定义的名称而不是变量来调用显式定义的方法。只是为了不引入难以调试的魔法。

您的示例不够清晰

通常,最好有一些可理解的代码:

$callback = array($this, $method):

if (is_callable($callback)) {
    call_user_func($callback);
}
但是,根据口味,您可能更喜欢:

if (is_callable($callback)) {
    $callback();
}
我不喜欢这一个而喜欢另一个,但要买一个有效的


也就是说,在这种情况下,我会尽量不使用魔法,我个人更喜欢通过定义的名称而不是变量来调用显式定义的方法。只是为了不引入难以调试的魔力。

如果要向函数传递参数,您认为哪种更合适或更易于使用?好吧,
call\u user\u func
只是一种较旧的方法,这是在添加变量函数之前唯一的方法。现在我会使用变量函数。如果你向函数传递参数,你认为哪一种更合适或更容易使用?好吧,
call\u user\u func
只是一种较旧的方法——这是在他们添加变量函数之前唯一的方法。现在我将使用变量函数。