Laravel - Facades
面向对象参考:
- 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用
 - PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
 - 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。
 
abstract class Facades
{
    //定义一个抽象方法,获取到需要实例化的类
    abstract public static function getFacadeAccessor() : object;
    //当访问的静态类不可访问的时候,触发
    static public function __callStatic($method,$arguments)
    {
        $instance = static::getFacadeAccessor();
        return $instance->$method(...$arguments);
    }
}
class ComputerFacades extends Facades
{
    static function getFacadeAccessor(): Computer
    {
        return new Computer();
    }
}
                    
                
                
            
        
浙公网安备 33010602011771号