laravel 的核心設計思想之服務容器

服務容器

就是普通的ioc容器,因爲是用來管理服務(組件)的,所以叫服務容器

這個服務容器在哪?

容器類的具體路徑 vendor/laravel/framework/src/Illuminate/Container/Container.php

如何把服務綁定到這個容器?

容器類有個 bind 方法,可以把服務綁定到容器類的 bindings 屬性,這是個大數組

容器類中還有個singleton方法,也是用來綁定的,是對bind方法的封裝,可以看到服務提供者中,都是用這兩個方法註冊到容器的

例如下面的redis服務

如何取出容器中的服務使用呢?

使用容器類的make方法

但是,請注意,一般不會直接操作這個 Container 容器類,而是會使用它的子類

laravel1/vendor/laravel/framework/src/Illuminate/Foundation/Application.php

Application類能使用Container的所有方法

有沒有更方便的取出服務的方法呢?

有,在 laravel1/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 中有個app助手函數,可以用來取出服務,調用的是Application對象,我們在控制器中取出服務的時候, app('db') 這麼寫就可以了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章