对 laravel 中服务提供者(Provider)和 门面(Facades) 的理解
-
Facades 先于 Provider 注册 所以 Facades 里的 类都可以引用 ;
-
Provider 中的 register 先于boot 执行 ;
-
在register 中 注册新的类 singleton方法是 闭包 只执行一次 , 定制多样类 使用 bind ;
-
创建provider 后再添加到 config/app.php的providers数组中即可 ;
-
创建Facades 先创建一个 门面类这个类名就是新名字 需要到配置文件config/app.php中注册门面类别名;
-
注意命名空间;
Facades 和 Provider 的关系 ?
服务提供者用于绑定一个类至容器 , 而Facades 是给这个类起个别名;
一个新的类完全可以直接通过控制器去实例化 为什么 还通过服务提供者 ?
服务容器就是解决你的依赖 , 放着容器不用 ,直接通过控制器注入, 随着项目越来越大 , 依赖越来越多 , 怎么维护 ;
其它 :
一个类的调用 第一种方法 直接在控制器中 use命名空间后 , new 一个对象 , 第二种是在Provider 中注册一个类, 在控制器中 App::make() 实例化这个类 , 当使用Facade别名以后 , 方法调用是 别名::方法 (注意use 别名) 它会自动执行闭包 ;