關於laravel容器的使用,大家都是什麼情況下用?

WBOY
發布: 2016-10-10 11:56:12
原創
1482 人瀏覽過

我還沒有很好的理解laravel容器。
我的理解是,容器裡放了很多的可供呼叫的物件。
需要時可以直接使用,無需new等。

想問一下,大家都會用到這個特性麼?
專案中一般怎麼去用這個特性呢?是分出個service層,然後把各service放進容器裡?
在controller裡呼叫?
還是直接不用呢?

回覆內容:

我還沒有很好的理解laravel容器。
我的理解是,容器裡放了很多的可供呼叫的物件。
需要時可以直接使用,無需new等。

想問一下,大家都會用到這個特性麼?
專案中一般怎麼去用這個特性呢?是分出個service層,然後把各service放進容器裡?
在controller裡呼叫?
還是直接不用呢?

Laravel容器是用來放Service的地方,這些Service就是一個個綁定到容器中的實例物件或閉包或其他的,綁定方式主要三種:bind(),singleton() and instance(),從容器解析Service方式:make(),這些都在IlluminateContainerContainer,而IlluminateFoundationApplication extends Container。

關於Container是如何運作的,當在Controller中使用Constructor Injection或Method Injection時,就已經在使用Container了,因為Container會自動幫你把這些服務解析出來,如:

<code>class AccountController extends Controller
{
    // 这里是Method Injection,Container会自动解析出Request,而不需要去new Request获得对象
    // 从容器中解析服务是用的Container::make()方法
    public function test(Request $request) 
    {
        return $request->ip();
    }
}</code>
登入後複製

所以容器服務一直都在用,總的來說容器就是分離了服務構造的場所,傳統是在被依賴對象內構造所需要的服務,而現在是在容器這個場所內構造所需依賴,而且是自動化的,並自動化注入到被依賴物件內,這樣就實現了解耦。

關於Container和Application的源碼解析可以看下:
Laravel學習筆記之Container源碼解析
Laravel學習筆記之IoC Container實例化源碼解析

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板