2010-11-25 75 views
1

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

看看的http:// PHP。 net/manual/en/functions.variable-functions.php – SubniC 2010-11-25 11:00:16

回答

8

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

是的,你可以。例如,一个物体里面:

$method = "method_1"; 

if (method_exists($this, $method)) 
$this->{$method}(); 
+0

+1好点检查之前是否存在呼叫:) – SubniC 2010-11-25 11:07:50

2

是的,你可以使用此语法:

$methodname = 'method_1'; 
$this->$methodname(); 
2

另外还有call_user_func解决方法:

call_user_func(array($this,$methodname), $arg...); 
相关问题