【问题标题】:php call from variable method of variable object: how to indicate this从变量对象的变量方法调用php:如何表示
【发布时间】:2013-08-14 14:11:31
【问题描述】:

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

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

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

通过这种方式,该方法可以根据类型对值应用不同的函数。
如果我需要调用一个放在“函数”数组中的函数,则只需要一个字符串,否则我会放置一个带有类名和方法名的数组。
这样一切正常。

当我需要在“函数”数组中放入“测试”类的方法时,问题就来了。 绕过我可以写的数组:

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

但没有运气。

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

【问题讨论】:

    标签: php variables object methods


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多