Laravel 服务容器中的类的别名和绑定数组中的key有什么联系和区别吗

各位大神,最近在研究laravel源码的时候遇到一些困惑还请不吝赐教。
laravel的服务容器中有一个数组aliases存放的是框架中一些类或者接口的别名,如图图片描述

另外一个数组bindings存放的是通过服务提供者绑定的服务。
图片描述

我就是想知道,就拿我用红框圈起来的events为例,这两个events有什么关系吗?还是根本就是两个东西,只不过名字相同而已。

阅读 3.3k
3 个回答

在aliases里设置别名

[
类名=>别名
]

events里直接用别名就行

使用 app()->make 的时候会先查看bindings内有没有这个服务,如果有,实例化这个服务。如果没有,查看alias有没有这个服务名称,如果有实例化。
如果以上都没有,直接以服务名作为类名,进行反射实例化服务。

当然具体的过程还有instance 和 single object,你需要看一下源码。

这样做为了IoC 和 DI,别名更具有语义化的特点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题