分類:Zend_Cache

快速啟動Symfony的​​DI(依賴注入)教程

,星期六2010年8月14日下午2時21分

什麼是依賴注入 (DI)?

依賴注入是一種技術,允許在松耦合對象軟件應用程序。 一般來說,如果一個對象需要訪問另一功能將被實例化內部導致緊耦合系統。 通過實施依賴注入我們注入所需的對象準備使用(有時也稱為控制反轉 - IOC)。 看看下面的例子:

  <?PHP
類決策者 {
    公共職能 makeDecision(數組 $參數){
         / /需要的數據庫適配器
         $ DP =新DecisionParameters();
         $ parameterScore = $ DP -> getScore($參數);
         / * ... 一些更多的決策邏輯 ...  * /
        返回($ parameterScore> 50);
     }
 } 

這一段代碼被認為是緊耦合的DecisionParameters對象。 重寫上面的一個鬆散耦合的方式,我們會碰到這樣的... ...。

  <?PHP
類決策者 {
    私人$ _dp;
    公共函數 __construct($ DP){
         $這個 - > _dp = $ DP;
     }
    公共職能 makeDecision(數組 $參數){
         $ parameterScore = $這個 - > _dp - > getScore($參數);
         / * ... 一些更多的決策邏輯 ...  * /
        返回($ parameterScore> 50);
     }
 } 

雖然獲得的好處松耦合的代碼,我們正在增加複雜性,使得每一個對象實例化時,我們還必須實例化它的依賴,並通過這些中了。 例如,這樣:

  $選擇 =新的決策者();
迴聲 $選擇 - > makeDecision(陣列('努力'=>'低','回報'=>'高')); 

現在變成了:

  $ DP =新DecisionParameters();
 $選擇 =新的決策者($ DP);
迴聲 $選擇 - > makeDecision(陣列('努力'=>'低','回報'=>'高')); 

這種情況變得更加痛苦的數量依賴一類是增加了,如果自己有依賴關係的依賴關係? 這可能很快成為一個對象管理的惡夢! 輸入依賴注入容器(或框架)...
繼續閱讀“快速啟動Symfony的​​DI(依賴注入)教程”»













由全景主題 Themocracy

7訪客在線
6位客人,1個機器人,0會員
今天最多訪問:14日上午01時 47 UTC
本月:16在2011年4月8日上午12時 59分UTC
今年:130 28-03-2011 10:40 PM UTC
所有時間:130 28-03-2011 10:40 PM UTC