首頁  >  文章  >  後端開發  >  關於laravel容器的使用,大家都是什麼情況下用?

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

WBOY
WBOY原創
2016-10-10 11:56:121470瀏覽

我還沒有很好的理解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實例化源碼解析

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn