没隔一段时间我就会怀疑自己是否真的用好了laravel 的这几个特性,那么这几个东西究竟是什么关系呢?
概念
服务容器:又称为IOC容器,是 laravel 内部类的组织形式,每个组件通过
bind()
(singleton()
,instance()
)注入其中,再通过make
取出服务提供者:又称为 ServiceProvider ,是为了有序管理组件而提出的概念,实现的时候是通过
register()
调用bind()
,可以手动register()
,也可以写在app.php
中统一register()
Facade:门面模式 ,是为了让 laravel 的核心组件用起来(写起来)更方便,实现的时候通过
getFacadeAccessor()
调用make
取得具体实现类,通过__callStatic()
实现方法静态调用Alias:Facade的集中配置
ServiceProvider
如果 ServiceProviderA 需要依赖 ServiceProviderB, 但是并不知道彼此的register()
先后顺序,可以在boot()
中注入ServiceProviderB