1
<?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()但它只使用私有和受保护的方法调用。

4

1 回答 1

3

魔术方法,例如__call__callStaticDocs仅对您的类中不存在的方法调用。当发生正常的方法调用时,它们不会被触发。所以没有办法用公共方法来实现这一点。

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

于 2012-07-20T18:18:56.547 回答