依賴注入 DI 控制反轉和容器

2021-10-06 03:39:03 字數 971 閱讀 4207

依賴注入(di):將依賴物件注入到某物件,實現方式一般是容器。是控制反轉的具體實現方式

控制反轉(ioc):某物件獲得依賴物件的方式反轉了,由主動建立方式反轉成被動注入。是依賴注入的思想原理

場景:乙個類的例項化需要依賴另外乙個類的場景

注入方式以及優缺點

// 建構函式注入(建構函式傳引數)

// 屬性注入(設定屬性)

// 介面注入

// 容器注入

容器注入**:

class container  else 

}/**

* 從容器中獲取服務(返回物件、或者執行匿名函式來返回物件)

* * @param $abstract 服務名稱

* @param $params 例項化服務所需要傳遞的引數

*/public function make($abstract, $params = )

array_unshift($params, $this);

// 返回閉包執行結果

return call_user_func_array($this->binds[$abstract], $params);

}}class a1

public function addcontainerdata($key, $clourse)// 還可以用反射機制

public function select($key, $a)

}class b1 \n";

}}class c1 \n";

}}$a1 = new a1();

$a1->addcontainerdata('b1', function());

$a1->addcontainerdata('c1', function());

$a1->select('b1', '_hhhh');

$a1->select('c1', '_hhhh_c1');

依賴注入(DI)和控制反轉

依賴注入 di 和控制反轉 ioc 基本是乙個意思,因為說起來誰都離不開誰。簡單來說,a依賴b,但a不控制b的建立和銷毀,僅使用b,那麼b的控制權交給a之外處理,這叫控制反轉 ioc 而a要依賴b,必然要使用b的instance,那麼 通過a的介面,把b傳入 通過a的構造,把b傳入 通過設定a的屬性...

php容器 控制反轉(IoC) 依賴注入(DI)

1 容器 容器 字面上理解就是裝東西的東西。常見的變數 物件屬性等都可以算是容器。容器存放的是物件 物件的描述 類 介面 或者是提供物件的 閉包 通過這種容器,我們得以實現許多高階的功能,其中最常提到的,就是 解耦 依賴注入 2 ioc inversion of control 控制反轉 控制反轉是...

控制反轉 IOC 和依賴注入 DI

控制反 從拆解字面上的意思,控制,是指物件建立 銷毀和管理 單例 的控制權,傳統程式設計上這個是交給呼叫方來控制。反轉,是指這些控制權優傳統上的呼叫方反轉為類似乙個容器的東西,統一調配和管理。依賴注入 依賴,其實就是耦合,這裡更多的是呼叫方和操作物件的耦合。注入是指,將某些耦合關係從乙個東西注入到另...