如何在 PHP 中捕获公共静态函数的调用


How can i catch a call of public static function in PHP?

<?php
class A
{
    public static function foo()
    {
        // some action
    }
    public static function __callStatic($method, $args)
    {
        self::foo();
        static::$method($args);
    }
}
class B extends A
{
    public static function bar(){}
}

搜索PHP公共静态函数处理程序,我尝试__callStatic()但它仅使用私有和受保护的方法调用。

magic 方法(如 __call__callStatic Docs(仅用于类中不存在的方法。当发生正常方法调用时,不会触发它们。因此,没有办法通过公共方法实现这一目标。

但是,您可以将这些方法设为私有/受保护,并使用 call_user_funccall_user_func_array 在魔术方法中调用它们。当然,这些函数的返回值也应该通过魔术方法返回。