【发布时间】:2016-05-03 08:06:29
【问题描述】:
在 javascript 中,我知道可以简单地覆盖单个实例的类方法,但我不太确定这在 PHP 中是如何管理的。 这是我的第一个想法:
class Test {
public $var = "placeholder";
public function testFunc() {
echo "test";
}
}
$a = new Test();
$a->testFunc = function() {
$this->var = "overridden";
};
我的第二次尝试是匿名函数调用,不幸的是杀死了 object 范围...
class Test {
public $var = "placeholder";
public $testFunc = null;
public function callAnonymTestFunc() {
$this->testFunc();
}
}
$a = new Test();
$a->testFunc = function() {
//here the object scope is gone... $this->var is not recognized anymore
$this->var = "overridden";
};
$a->callAnonymTestFunc();
【问题讨论】:
-
我不确定您为什么要这样做。仅仅是设置属性吗?还是有其他功能?
-
您要覆盖类还是对象级别?如果在类级别,您可以简单地扩展您的类并以这种方式覆盖函数。如果在对象级别,您可以将回调传递给构造函数。
-
它将在对象级别,您能否进一步解释“您可以将回调传递给构造函数”的意思?提前致谢!
-
我发现了一个类似的线程。 Custom anonymous function
-
我们在这里讨论的是哪个 PHP 版本?
标签: php oop overriding