php从变量对象的变量方法调用:如何表明这一点

时间:2013-08-14 14:11:32

标签: php variables object methods

首先抱歉我的英语 我试着解释一下。

class Test{
    protected $functions = ['a'=>'function1', 'b'=>['ClassX', 'methodY']];

    public function exaple($value, $type){
        $k = call_user_func($this->functions[$type], $value);
    }
}

通过这种方式,该方法可以根据类型对不同的函数应用不同的函数 如果我需要调用一个函数放在“functions”数组中只有一个字符串,否则我把一个带有类名和方法名的数组。
这样一切都很好
当我需要在“函数”数组中放入“Test”类的方法时,就会出现问题。 绕过数组我可以写:

call_user_func([$this, 'localMethod'], $value);

这项工作 但是当我试图把它放在“函数”数组中时,我不知道如何指定$this
这里有新的例子:

class Test{
    protected $functions = ['a'=>'function1', 'b'=>['ClassX', 'methodY'], 'c'=>['$this','localMethod']];

    public function exaple($value, $type){
        $k = call_user_func($this->functions[$type], $value);
    }

    public function localMethod($value){
        [...]
    }
}

通过这种方式它不起作用 我尝试过不同的方式:

'c'=>['$this','localMethod']
'c'=>['this','localMethod']
'c'=>[$this,'localMethod']

但没有运气。

任何人都可以帮助我吗?任何帮助将不胜感激 感谢

1 个答案:

答案 0 :(得分:0)

在实例化类之前,您无法引用$this。您必须在类的构造函数中添加这些方法:

public function __construct() {
    $this->functions['c'] = [$this, 'localMethod'];
}