变量对象的变量方法的php调用:如何表示

变量对象的变量方法的php调用:如何表示,php,variables,object,methods,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); } } 通过这种方式,该方法可以根据

首先为我的英语感到抱歉。
我试着用一个例子来解释

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

    public function exaple($value, $type){
        $k = call_user_func($this->functions[$type], $value);
    }
}
通过这种方式,该方法可以根据类型对值应用不同的函数。
如果我需要调用一个函数,那么在“functions”数组中只放一个字符串,否则我会放一个带有类名和方法名的数组。
这样一切都很好。

当我需要在“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']
但是没有运气

有人能帮我吗?任何帮助都将不胜感激。

谢谢

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

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