如何在PHP中动态调用方法?

ope*_*rog 4 php

示例:我有一个变量

$method = "doSomething";
Run Code Online (Sandbox Code Playgroud)

假设我有一个$ myObject,它知道一个非静态的公共方法doSomething()

我可以通过这样做来调用该方法吗?

$myObject->$method();
Run Code Online (Sandbox Code Playgroud)

或者还有其他/更好的方法吗?

Pas*_*TIN 10

是的,你可以这样做 :

$myObject->$method();
Run Code Online (Sandbox Code Playgroud)

这称为变量函数


以下是证明它的代码:

class ClassA {
    public function method() {
        echo 'glop';
    }
}

$a = new ClassA();
$methodName = 'method';
$a->$methodName();
Run Code Online (Sandbox Code Playgroud)

获取此输出:

glop
Run Code Online (Sandbox Code Playgroud)

这意味着该方法已被调用;-)


另一种方法是使用call_user_funccall_user_func_array:

call_user_func(array($a, $methodName));
Run Code Online (Sandbox Code Playgroud)

在这里,你不需要这个 - 但是你必须使用它,如果你的方法是static,至少对于PHP <= 5.2

  • 像往常一样完美答案.查看我的资料 ;-) (2认同)