PHP是否存在一个检测变量变化的函数?是这样的:
//called when $a is changed.
function variableChanged($value) {
echo "value changed to " . $value;
}
$a = 1;
//attach the variable to the method.
$a.attachTo("variableChanged");
$a = 2;
$a = 3;
//expected output:
//value changed to 2
//value changed to 3
我知道如果我使用“setter”方法很容易实现。但是由于我正在处理一些现有的代码,我不能修改它们。有人能告诉我如何实现我的目的吗?谢谢。
4条答案
按热度按时间2lpgd9681#
我知道如果我使用“setter”方法很容易实现。但是因为我正在处理一些现有的代码,所以我不能修改它们。
我假设你可以修改一些代码,但不能修改你正在使用的对象/类。如果你根本不能修改任何代码,这个问题就没有用了。
你可以做的是创建你自己的类,扩展你正在使用的类,并在那里添加你的setter。在任何情况下,你都不能覆盖父设置,除了你需要跟踪的魔术setter。跟踪更改,然后调用父函数,这样任何其他内部工作的更改都不会生效。
72qzrwbm2#
这只能通过将变量 Package 在类中并自己实现onchange来实现。
即
55ooxyrt3#
您可以像这样简单地修改您的代码,以产生您想要的预期输出。
或者使用这样的类....
8wtpewkr4#
除了使用
debugger
之外:SplObserver接口与SplSubject一起用于实现观察者设计模式。http://www.php.net/manual/en/class.splobserver.php
或者神奇的方法
__get()
和__set()
:将变量封装到一个类中,您可以自己实现一个事件处理程序,并注册变量的更改。您还可以像下面这样附加回调: