鍍金池/ 問答/PHP/ Laravel 服務(wù)容器中的類的別名和綁定數(shù)組中的key有什么聯(lián)系和區(qū)別嗎

Laravel 服務(wù)容器中的類的別名和綁定數(shù)組中的key有什么聯(lián)系和區(qū)別嗎

各位大神,最近在研究laravel源碼的時候遇到一些困惑還請不吝賜教。
laravel的服務(wù)容器中有一個數(shù)組aliases存放的是框架中一些類或者接口的別名,如圖圖片描述

另外一個數(shù)組bindings存放的是通過服務(wù)提供者綁定的服務(wù)。
圖片描述

我就是想知道,就拿我用紅框圈起來的events為例,這兩個events有什么關(guān)系嗎?還是根本就是兩個東西,只不過名字相同而已。

回答
編輯回答
朕略萌

使用 app()->make 的時候會先查看bindings內(nèi)有沒有這個服務(wù),如果有,實例化這個服務(wù)。如果沒有,查看alias有沒有這個服務(wù)名稱,如果有實例化。
如果以上都沒有,直接以服務(wù)名作為類名,進行反射實例化服務(wù)。

當(dāng)然具體的過程還有instance 和 single object,你需要看一下源碼。

這樣做為了IoC 和 DI,別名更具有語義化的特點。

2017年6月13日 06:49
編輯回答
詆毀你

在aliases里設(shè)置別名

[
類名=>別名
]

events里直接用別名就行

2018年4月14日 19:16
編輯回答
夢囈

是一碼事。找到了一篇博客,對服務(wù)容器有很詳細的描述,受益匪淺!感謝作者。[php]laravel框架容器管理的一些要點

2017年10月9日 10:49