之前寫過關於php依賴注入的文章。。最近發現有的朋友對這個還是理解模糊,在這裡我想寫個簡單的例項幫助朋友們理解下。。。
傳統的思路是應用程式用到乙個a類,就會建立a類並呼叫a類的方法,假如這個方法內需要乙個b類,就會建立b類並呼叫b類的方法,而這個方法內需要乙個c類,就會建立c類,接著做些其它工作。
<?phpclassc}
classb}
classa}
$class = new
a();
$class->dosomething(); //
c::dosomething我是c類|b::dosomething我是b類|a::dosomething我是a類|
使用依賴注入的思路是應用程式用到a類,a類需要b類,b類需要c類,那麼先建立c類,再建立b類並把c注入,再建立a類,並把b類注入,再呼叫a方法,a呼叫b方法,接著做些其它工作。
<?phpclassc}
class
b
public
function
dosomething()
}class
a
public
function
dosomething()
}$class = new a(new b(new
c()));
$class->dosomething(); //
c::dosomething我是c類|b::dosomething我是b類|a::dosomething我是a類|
這就是控制反轉模式。依賴關係的控制反轉到呼叫鏈的起點。這樣你可以完全控制依賴關係,通過調整不同的注入物件,來控制程式的行為。例如a類用到了memcache,可以在不修改a類**的情況下,改用redis。
使用依賴注入容器後的思路是應用程式需要到a類,就從容器內取得a類,容器建立c類,再建立b類並把c注入,再建立a類,並把b注入,應用程式呼叫a方法,a呼叫b方法,接著做些其它工作.
總之容器負責例項化,注入依賴,處理依賴關係等工作。其實依賴注入不難理解哦。
如何理解php的依賴注入
之前寫過關於php依賴注入的文章。最近發現有的朋友對這個還是理解模糊,在這裡我想寫個簡單的例項幫助朋友們理解下。傳統的思路是應用程式用到乙個a類,就會建立a類並呼叫a類的方法,假如這個方法內需要乙個b類,就會建立b類並呼叫b類的方法,而這個方法內需要乙個c類,就會建立c類,接著做些其它工作。clas...
理解php的依賴注入
用來減少 之間的耦合 有效分離物件和它所需的外部資源 示例現有person類和car類這兩個類 person類 namespace di class person car類 namespace di class car index呼叫person類的buy方法 public function per...
PHP如何實現依賴注入
摘要 控制反轉 inversion of control,英文縮寫為ioc 是框架的重要特徵。控制反轉 ioc 是一種思想,依賴注入 di 是實施這種思想的方法。高層模組不應該依賴於底層模組,兩個都應該依賴抽象。抽象不應該依賴於細節,細節應該依賴於抽象。首先,我們來看一段 class a class...