示例:我有一个像
这样的变量$method = "doSomething";
假设我有一个$ myObject,它知道一个非静态的公共方法doSomething()
我可以通过这样做来调用该方法吗?
$myObject->$method();
还是有其他/更好的方法吗?
答案 0 :(得分:10)
是的,你可以这样做:
$myObject->$method();
以下是证明它的代码:
class ClassA {
public function method() {
echo 'glop';
}
}
$a = new ClassA();
$methodName = 'method';
$a->$methodName();
获取此输出:
glop
这意味着该方法已被调用; - )
另一种方法是使用call_user_func
或call_user_func_array
:
call_user_func(array($a, $methodName));
在这里,你不需要这个 - 但如果你的方法是static
,你必须使用它,至少对于PHP< = 5.2
答案 1 :(得分:4)
是的,但是建议您在调用之前首先确保该方法存在:
if (method_exists(array($myObject, $method)) {
$myObject->$method();
}