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

时间:2010-01-08 19:31:56

标签: php

示例:我有一个像

这样的变量
$method = "doSomething";

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

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

$myObject->$method();

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

2 个答案:

答案 0 :(得分:10)

是的,你可以这样做:

$myObject->$method();

这称为Variable functions


以下是证明它的代码:

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

$a = new ClassA();
$methodName = 'method';
$a->$methodName();

获取此输出:

glop

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


另一种方法是使用call_user_funccall_user_func_array

call_user_func(array($a, $methodName));

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

答案 1 :(得分:4)

是的,但是建议您在调用之前首先确保该方法存在:

if (method_exists(array($myObject, $method)) {
    $myObject->$method();
}