20.1.容器门面系统

FacadeC 容器门面系统

FacadeC和Facade类型,唯一的不同是代理对象不同

注意:和Facade的区别

原理

abstract class FacadeC extends Facade{
    /**
     * 从容器中获取对应实例
     *
     * @param string $name
     * @return mixed
     */
    public static function getInstance(){
        return com('container')->get(static::getName());
    }
}

案例

//使用《20.0》的案例
//调用门面类静态函数
Log::info('haha');
//上面的代码等效于
Facade::getInstance()->info('haha')
//更进一步
com('container')->get(static::getName())->info('haha')
//从容器中获取log实例并调用成员方法info
com('container')->get('logger')->info('haha')
//容器介绍见《5.容器》