在单个类中,我可以使用_ 调用/ _callStatic函数在实际运行任何函数之前调用函数。但是,我还没有找到一个可以应用于父级的解决方案,它将由孩子们继承。
我能想到的唯一方法是在每个类中放入一小段代码,调用父代中的函数,其中包含我的代码。
我可以实施更好的解决方案吗?
答案 0 :(得分:1)
只要您至少使用php 5.4,就可以使用特征。 http://php.net/traits
这需要对代码进行一些调整,但可能会允许所需的行为。 您是否有关于您的用例的更多信息?我想从您的描述中记录,这是正确的吗?
答案 1 :(得分:0)
不幸的是,PHP中没有魔术方法可以在调用任何方法时运行。
我认为您正在寻找的解决方案是装饰器,请参阅本文以获取有关PHP中装饰方法/类的提示。
答案 2 :(得分:0)
如果没有看到某些代码,很难帮助你。但是,假设您没有在子类中重新定义__call
/ __callStatic
,它应该只是从它的超类继承该方法。
如果您在子类中做重新定义__call
/ __callStatic
,它将覆盖超类的定义。所以你必须以某种方式调用超类的方法。为此,您可以使用parent
关键字。见这个例子:
class SuperClass
{
public function __call($name, $arguments)
{
// Do some stuff
}
}
class SubClass extends SuperClass
{
public function __call($name, $arguments)
{
// Execute the parent's __call() method
return parent::__call($name, $arguments);
// Do some extra stuff here
}
}