服務容器
就是普通的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') 這麼寫就可以了