我可以使用变量来调用方法吗?

时间:2010-11-25 10:55:51

标签: php oop codeigniter

当方法名称存储在变量中时,我可以调用方法吗?语法是什么?假设我有以下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(); }

我可以使用我的默认变量来调用正确的方法吗?

3 个答案:

答案 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...);