各位大神,最近在研究laravel源码的时候遇到一些困惑还请不吝赐教。
laravel的服务容器中有一个数组aliases存放的是框架中一些类或者接口的别名,如图
另外一个数组bindings存放的是通过服务提供者绑定的服务。
我就是想知道,就拿我用红框圈起来的events为例,这两个events有什么关系吗?还是根本就是两个东西,只不过名字相同而已。
各位大神,最近在研究laravel源码的时候遇到一些困惑还请不吝赐教。
laravel的服务容器中有一个数组aliases存放的是框架中一些类或者接口的别名,如图
另外一个数组bindings存放的是通过服务提供者绑定的服务。
我就是想知道,就拿我用红框圈起来的events为例,这两个events有什么关系吗?还是根本就是两个东西,只不过名字相同而已。
使用 app()->make 的时候会先查看bindings内有没有这个服务,如果有,实例化这个服务。如果没有,查看alias有没有这个服务名称,如果有实例化。
如果以上都没有,直接以服务名作为类名,进行反射实例化服务。
当然具体的过程还有instance 和 single object,你需要看一下源码。
这样做为了IoC 和 DI,别名更具有语义化的特点。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
798 阅读
649 阅读
是一码事。找到了一篇博客,对服务容器有很详细的描述,受益匪浅!感谢作者。[php]laravel框架容器管理的一些要点