当方法名称存储在变量中时,我可以调用方法吗?语法是什么?假设我有以下PHP代码:
class MyClass {
public $default;
function index() {
/* call method named by $this->default */
}
function method_1() {}
function method_2() {}
...
}
如果没有专门调用其他方法,则在初始化类时默认调用 index()
。
如何使用index()
属性在MyClass->$default
内调用其中一个方法?也就是说,如果我通常会写:
function index() { $this->method_1(); }
我可以使用我的默认变量来调用正确的方法吗?
答案 0 :(得分:8)
我可以使用变量调用方法吗?
是的,你可以。例如,在对象内:
$method = "method_1";
if (method_exists($this, $method))
$this->{$method}();
答案 1 :(得分:2)
是的,您可以使用以下语法:
$methodname = 'method_1';
$this->$methodname();
答案 2 :(得分:2)
还有call_user_func解决方法:
call_user_func( array($this,$methodname), $arg...);