面向对象参考:
- 在静态上下文中调用一个不可访问方法时,__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();
}
}