新手學laravel,對於文件中的容器和依賴注入一直不是很理解,有誰能通俗易懂的解釋一下這是什麼?在實際專案中哪些地方需要用到?
新手學laravel,對於文件中的容器和依賴注入一直不是很理解,有誰能通俗易懂的解釋一下這是什麼?在實際專案中哪些地方需要用到?
這篇文章寫得不錯http://laravelacademy.org/pos...
Service Container
,當A類工作需要依賴B、C類時,傳統會在A類內部進行new B,new C後才能使用B,C提供的服務,這樣會使得A類與B,C嚴重耦合。但是有了Service Container
,就可以把依賴的建構過程由容器去解決,而A類只需要在Constructor
或Method Getter/Setter
中註入B和C類或者B,C的抽象(接口),這就是建構器依賴注入和方法依賴注入(Dependency Injection
),實現A類與B,C的解耦。如:如果注入的是B,C的接口,就可以隨時替換掉B,C成為D,E,D,E只要實現對應的接口就行,這樣A就與B,C實現松耦合。
Laravel中往Service Container中綁定服務的就是三種方法:bind(),singleton(),instance()
;解析出服務的是make()
方法。解決建構相依或方法依賴的是\Illuminate\Container\Container::getDependencies(),\Illuminate\Container\Container::call()
方法。當中一個重要知識點就是利用了PHP的Reflection特性。
具體可看下源碼。希望能幫到你。