Laravel

面向对象参考:

  • 在静态上下文中调用一个不可访问方法时,__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();
    }
}
原文地址:https://www.cnblogs.com/ywjcqq/p/14858760.html