1. 简介
门面为服务器容器提供了“静态接口”,La的门面(facades)作为服务器容器中的底层类的“静态代理”,相比如传统的静态方法啊,在维护中更容易测试更灵活。La的所有门面都定义在 Illuminate\Support\Facades命名空间下。
2. 什么时候使用门面
1. 最危险的就是类范围蠕变 ,注意控制类的大小。
2. 在构建与La交互的第三方扩展包时,最好注入的是契约而不是门面,因为扩展包在La以外构建,你不能通过访问La门面测试辅助函数
3. 门面的原理
门面就是一个为容器中对象提供访问方式的类。所有的门面都继承了Illuminate\Support\Facades\Facade基类,门面类只需要实现一个方法: getDacadeAccessor,它定义了从容器中解析什么,然后Facade基类使用魔术方法——callStatiac()从你的门面中调用解析对象。我们对门面的所有调用都会被传递给 Laravel 缓存服务的底层实例。
Cache门面继承Facade基类并定义了getFacadeAccessor方法,该方法的工作就是返回服务容器绑定类的别名,当用户引用Cache类的任何静态方法时,Laravel 从服务容器中解析cache绑定,然后在解析出的对象上调用所有请求方法
调用门面静态方法-->根据getFacadeAccessor获取绑定解析-->调用解析对象的请求方法。代理静态
网友评论