在课堂外使用$ this

时间:2017-12-25 19:12:25

标签: php oop

我有一个类,我几乎为每个数据库表扩展了我的记录。到目前为止一切正常,但我需要在被调用函数上使用$this

这是我的课程,例如:

class myClass
{
    public function __call($method, $args)
    {
        if (isset($this->$method)) {
            $func = $this->$method;
            return call_user_func_array($func, $args);
        }
    }
}

这是我的测试功能:

$testFunction = function($variable1) {
    $this->_temp_instance = clone $this;
}

我正在分配给我的班级:

$class_instance = new myClass();
$class_instance->new_assigned_function = $testFunction;
$class_instance->new_assigned_function();

我收到错误:

Fatal error: Uncaught Error: Using $this when not in object context in...

我可以在不编辑可扩展类或继承类的情况下创建吗?

我有 toooooo 许多课程:/

谢谢。

1 个答案:

答案 0 :(得分:2)

你想要实现的目标(以及为什么要实现这一目标)对我来说似乎非常hacky ,而你所追求的几乎是当然可以解决一些其他更干净的方式,但是 - 回答你的问题...

您可以bind the closure

$instance = new myClass;
$boundFunction = $testFunction->bindTo($instance, $instance);
$instance->func = $boundFunction;
$instance->func();