如何在调用其他静态函数时调用一个函数


How to invoke a function on calling other static function?

当任何静态函数被调用一次时,我如何自动调用函数。

class A{
    private static $val;
    public static function X(){
        return static::$val;
    }
}
class B extend A
{    
}

如果我调用B::X();,那么函数可以设置父类的$val的值。这必须在不创建class B实例的情况下完成。

我想自动做到这一点。类似construct的功能。在调用任何静态方法之前,我想自动调用一个函数

如果我调用B::X(),有可能吗;则函数可以设置父类的$val。这必须在不创建实例的情况下完成B类

试试这个:

class A {
    protected static $val;
    public static function X(){
        return static::$val;
    }
}
class B extends A
{
    public static function X(){
        static::$val = 123;
        return parent::X();
    }
}
echo B::X();

你必须

  • private static $val;替换为protected static $val;以使属性在类B中可见
  • 你必须使用extends而不是extend
  • 您可以使用parent::来调用父类的方法(在您的情况下是类A