我有一个类,我几乎为每个数据库表扩展了我的记录。到目前为止一切正常,但我需要在被调用函数上使用$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 许多课程:/
谢谢。
答案 0 :(得分:2)
你想要实现的目标(以及为什么要实现这一目标)对我来说似乎非常hacky ,而你所追求的几乎是当然可以解决一些其他更干净的方式,但是 - 回答你的问题...
您可以bind the closure 。
$instance = new myClass;
$boundFunction = $testFunction->bindTo($instance, $instance);
$instance->func = $boundFunction;
$instance->func();