摘要:依賴注入傳統的思路應用程序用到一個類就會創建類并調用類的方法。這樣你可以完全控制依賴關系,通過調整不同的注入對象,來控制程序的行為。例如類用到了,可以在不修改類代碼的情況下,改用。
依賴注入
傳統的思路
應用程序用到一個Foo類,就會創建Foo類并調用Foo類的方法。 假如這個方法內需要一個Bar類,就會創建Bar類并調用Bar類的方法。 而這個方法內需要一個Bim類,就會創建Bim類,接著做些其它工作。
/** * Foo */ class Foo { public function doSomething($value="") { # code... $Bar = new Bar(); $Bar->doSomething(); echo "Foo doSomething","
" ; } } /** * Bar */ class Bar { public function doSomething($value="") { # code... $Bim = new Bim(); $Bim->doSomething(); echo "Bar doSomething","
" ; } } /** * Bim */ class Bim { public function doSomething($value="") { # code... echo "Bim doSomething","
" ; } } $doSomething = new Foo(); $doSomething->doSomething();
依賴注入
應用程序用到Foo類,Foo類需要Bar類,
Bar類需要Bim類,那么先創建Bim類,再創建Bar類并把Bim注入,再創建Foo類,并把Bar類注入,
再調用Foo方法,Foo調用Bar方法,接著做些其它工作。
/** * Bim2 */ class Bim2 { public function doSomething($value="") { # code... echo "Bim2 doSomething","
" ; } } /** * Bar2 */ class Bar2 { private $bim2 ; public function __construct(Bim2 $bim2) { # code... $this->bim2 = $bim2 ; } public function doSomething($value="") { # code... $this->bim2->doSomething(); echo "Bar2 doSomething","
"; } } /** * Foo */ class Foo2 { private $bar2 ; public function __construct(Bar2 $bar2) { # code... $this->bar2 = $bar2 ; } public function doSomething($value="") { # code... $this->bar2->doSomething(); echo "Foo2 doSomething","
"; } } $doSomething2 = new Foo2(new Bar2(new Bim2())); $doSomething2->doSomething();
這就是控制反轉模式。依賴關系的控制反轉到調用鏈的起點。這樣你可以完全控制依賴關系,通過調整不同的注入對象,來控制程序的行為。
例如Foo類用到了memcache,可以在不修改Foo類代碼的情況下,改用redis。
使用依賴注入容器后的思路是應用程序需要到Foo類,就從容器內取得Foo類,容器創建Bim類,再創建Bar類并把Bim注入,再創建Foo類,并把Bar注入,應用程序調用Foo方法,Foo調用Bar方法,接著做些其它工作.
擴展:容器負責實例化,注入依賴,處理依賴關系等工作。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31001.html
摘要:前言先安裝對應的這里用的是不同的擴展實現方式會有細微的差異擴展地址具體以官網為準介紹配置信息基類生產者類消費者類消費者可有多個配置交換機路由生產者路由只控制發送成功不接受消費者是否收到頻道 前言 先安裝PHP對應的RabbitMQ,這里用的是 php_amqp 不同的擴展實現方式會有細微的差異. php擴展地址: http://pecl.php.net/package/amqp 具...
摘要:目錄介紹消息事物類主業務類事物類消息事物類消息標簽未發送確認發送發送成功已取消請求發送消息根據進行處理只記錄消息數據不發送消息標記消息為返回消息唯一標識確認發送消息根據對消息進行處理發送消息數據標記消息為消息發送成功后標記消息為取消發送消息 目錄介紹 MessageTr.php 消息事物類 Business.php 主業務類 BusinessDb.php DB事物類 Mess...
摘要:前言之前寫的織夢源碼解析之程序安裝一文中,還有幾個值得講解的文件沒有提到,這里說明一下。總結安裝文件,到此真的結束了。 前言 之前寫的《dedecms5.7(織夢)源碼解析之程序安裝》一文中,還有幾個值得講解的文件沒有提到,這里說明一下。 代碼 templates目錄 該文件夾中,一共有step-1.html、step-2.html、step-3.html、step-4.html、st...
摘要:前言原生支付后需要調用服務端接口進行驗證檢測是否真正的支付成功環境配置建議提成配置參數錯誤操作成功支付驗證蘋果支付認證的憑證后的數據環境配置沙箱地址真實運營地址數據組裝日志記錄操作這兩行一定要加,不加會報錯誤請求有錯誤數據錯 前言 IOS原生支付后,需要調用服務端接口進行驗證,檢測是否真正的支付成功!
閱讀 870·2021-11-18 10:02
閱讀 1671·2019-08-30 15:56
閱讀 2570·2019-08-30 13:47
閱讀 2639·2019-08-29 12:43
閱讀 851·2019-08-29 11:19
閱讀 1783·2019-08-28 18:23
閱讀 2669·2019-08-26 12:23
閱讀 3007·2019-08-23 15:29