控制反轉(Inversion of Control,縮寫為IoC),是物件導向程式設計中的一種設計原則,可以用來減少電腦程式碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI)。
透過配置來改變依賴介面的實現,這也是依賴注入最基本和最核心的功能
#靈活控制依賴實作的實例範圍,單例、每個執行緒一個、每個請求一個等等
#所依賴的參數,依賴的依賴等管理
程式碼更簡潔、邏輯更清楚
Mock方便測試方便(推薦學習:PHP程式設計從入門到精通)
總的來說就是把應用程式中的功能塊與功能塊之間,類別與類別之間的依賴關係透過一個統一的框架集中管理起來
一個簡單的依賴注入的範例
請看如下程式碼:
<?php class Container { private $s=array(); function __set($k, $c) { $this->s[$k]=$c; } function __get($k) { return $this->s[$k]($this); } }
有了container類別之後我們可以怎麼管理A與B之間的那依賴關係呢,用程式碼說話:
<?php class A { private $container; public function __construct(Container $container) { $this->container = $container; } public function doSomeThing() { //do something which needs class B $b = $this->container->getB(); //to do } }
再將B類別注入到容器類別中:
$c = new Container(); $c->setB(new B());
還可以傳入一個匿名函數,這樣B類別就不會在傳入時就立即實例化,而是在真正呼叫時才完成實例化的工作:
$c = new Container(); $c->setB(function (){ return new B(); });
以上是php依賴注入有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!