PHP:每当调用子类中的函数时调用函数

时间:2013-12-09 21:48:19

标签: php function class overloading

在单个类中,我可以使用_ 调用/ _callStatic函数在实际运行任何函数之前调用函数。但是,我还没有找到一个可以应用于父级的解决方案,它将由孩子们继承。

我能想到的唯一方法是在每个类中放入一小段代码,调用父代中的函数,其中包含我的代码。

我可以实施更好的解决方案吗?

3 个答案:

答案 0 :(得分:1)

只要您至少使用php 5.4,就可以使用特征。 http://php.net/traits

这需要对代码进行一些调整,但可能会允许所需的行为。 您是否有关于您的用例的更多信息?我想从您的描述中记录,这是正确的吗?

答案 1 :(得分:0)

不幸的是,PHP中没有魔术方法可以在调用任何方法时运行。

我认为您正在寻找的解决方案是装饰器,请参阅本文以获取有关PHP中装饰方法/类的提示。

how to implement a decorator in 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
    }
}