php从variable对象的variable方法调用:如何指示这一点


php call from variable method of variable object: how to indicate this

首先对不起我的英语
我试着用一个例子来解释。

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'];
}