中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

理解php依賴注入和控制反轉
來源:易賢網 閱讀:1389 次 日期:2016-08-23 16:26:08
溫馨提示:易賢網小編為您整理了“理解php依賴注入和控制反轉”,方便廣大網友查閱!

要想理解php依賴注入和控制反轉兩個概念,就必須搞清楚如下的問題:

DI——Dependency Injection   依賴注入

IoC——Inversion of Control  控制反轉

1、參與者都有誰?  

答:一般有三方參與者,一個是某個對象;一個是IoC/DI的容器;另一個是某個對象的外部資源。又要名詞解釋一下,某個對象指的就是任意的、普通的Java對象; IoC/DI的容器簡單點說就是指用來實現IoC/DI功能的一個框架程序;對象的外部資源指的就是對象需要的,但是是從對象外部獲取的,都統稱資源,比如:對象需要的其它對象、或者是對象需要的文件資源等等。

2、依賴:誰依賴于誰?為什么會有依賴?

答:某個對象依賴于IoC/DI的容器。依賴是不可避免的,在一個項目中,各個類之間有各種各樣的關系,不可能全部完全獨立,這就形成了依賴。傳統的開發是使用其他類時直接調用,這會形成強耦合,這是要避免的。依賴注入借用容器轉移了被依賴對象實現解耦。

3、注入:誰注入于誰?到底注入什么?

答:通過容器向對象注入其所需要的外部資源

4、控制反轉:誰控制誰?控制什么?為什么叫反轉?

答:IoC/DI的容器控制對象,主要是控制對象實例的創建。反轉是相對于正向而言的,那么什么算是正向的呢?考慮一下常規情況下的應用程序,如果要在A里面使用C,你會怎么做呢?當然是直接去創建C的對象,也就是說,是在A類中主動去獲取所需要的外部資源C,這種情況被稱為正向的。那么什么是反向呢?就是A類不再主動去獲取C,而是被動等待,等待IoC/DI的容器獲取一個C的實例,然后反向的注入到A類中。

5、依賴注入和控制反轉是同一概念嗎?

答:從上面可以看出:依賴注入是從應用程序的角度在描述,可以把依賴注入描述完整點:應用程序依賴容器創建并注入它所需要的外部資源;而控制反轉是從容器的角度在描述,描述完整點:容器控制應用程序,由容器反向的向應用程序注入應用程序所需要的外部資源。 

下面我們通過例子來具體看看依賴注入的一些實現方式:

1.構造器注入

<?php

class Book {

  private $db_conn;

  public function __construct($db_conn) {

    $this->db_conn = $db_conn;

  }

}

2、setter注入

<?php

class book{

   private $db;

   private $file;

   function setdb($db){

     $this->db=$db;

   }

   function setfile($file){

     $this->file=$file;

   }

}

class file{}

class db{}

...

class test{

   $book = new Book();

    $book->setdb(new db()); 

   $book->setfile(new file());

}

?>

上面倆種方法代碼很清晰,但是當我們需要注入很多個依賴時,意味著又要增加很多行,會比較難以管理。

比較好的解決辦法是 建立一個class作為所有依賴關系的container,在這個class中可以存放、創建、獲取、查找需要的依賴關系

<?php

class Ioc {

  protected $db_conn;

  public static function make_book() {

    $new_book = new Book();

    $new_book->set_db(self::$db_conn);

    //...

    //...

    //其他的依賴注入

    return $new_book;

  }

}

此時,如果獲取一個book實例,只需要執行$newone = Ioc::makebook();

以上是container的一個具體實例,最好還是不要把具體的某個依賴注入寫成方法,采用registry注冊,get獲取比較好

<?php

class Ioc {

/**

* @var 注冊的依賴數組

*/

  protected static $registry = array();

  /**

  * 添加一個resolve到registry數組中

  * @param string $name 依賴標識

  * @param object $resolve 一個匿名函數用來創建實例

  * @return void

  */

  public static function register($name, Closure $resolve)

  {

   static::$registry[$name] = $resolve;

  }

  /**

   * 返回一個實例

   * @param string $name 依賴的標識

   * @return mixed

   */

  public static function resolve($name)

  {

    if ( static::registered($name) )

    {

     $name = static::$registry[$name];

     return $name();

    }

    throw new Exception('Nothing registered with that name, fool.');

  }

  /**

  * 查詢某個依賴實例是否存在

  * @param string $name id

  * @return bool 

  */

  public static function registered($name)

  {

   return array_key_exists($name, static::$registry);

  }

}

現在就可以通過如下方式來注冊和注入一個

<?php

$book = Ioc::registry('book', function(){

$book = new Book;

$book->setdb('...');

$book->setprice('...');

return $book;

});

//注入依賴

$book = Ioc::resolve('book');

?>

以上就是針對php依賴注入和控制反轉的理解,希望對大家學習PHP程序設計有所幫助。

更多信息請查看網絡編程
易賢網手機網站地址:理解php依賴注入和控制反轉
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
久久综合久久综合久久| 亚洲日本电影在线| 久久久久成人精品免费播放动漫| 亚洲伊人网站| 玖玖玖免费嫩草在线影院一区| 久久久久九九视频| 欧美欧美全黄| 国语自产精品视频在线看一大j8| 亚洲欧洲日本专区| 久久激情视频免费观看| 欧美日韩综合久久| 在线欧美一区| 欧美尤物巨大精品爽| 久久国产精品第一页 | 久久一区二区三区四区| 欧美日韩国产一级| 黑人巨大精品欧美一区二区| 亚洲一区免费网站| 欧美成年人网站| 悠悠资源网亚洲青| 9人人澡人人爽人人精品| 老司机午夜精品| 精品91免费| 久久精品99国产精品| 欧美另类人妖| 国产一区二区三区直播精品电影 | 亚洲第一在线综合网站| 亚洲综合二区| 国产精品女主播一区二区三区| 日韩视频在线一区| 欧美日韩国产色站一区二区三区| 在线免费观看日本欧美| 久久久久久久久综合| 一区福利视频| 亚洲欧美精品在线观看| 欧美激情中文不卡| 日韩视频精品在线观看| 久久精品日产第一区二区| 国产美女精品免费电影| 欧美中文字幕不卡| 国精品一区二区三区| 久久综合久久久| 亚洲高清在线视频| 欧美电影在线观看完整版| 亚洲高清激情| 欧美激情久久久久| 日韩视频在线观看| 国产精品日韩一区二区| 午夜精品免费在线| 国产视频精品va久久久久久| 久久久精品视频成人| 1024精品一区二区三区| 一区免费观看视频| 欧美成人精品一区二区| 亚洲美女免费精品视频在线观看| 欧美先锋影音| 久久久久免费| 99精品欧美| 激情综合在线| 欧美日韩一区不卡| 久久精品成人| 亚洲视频你懂的| 国产精品一区二区在线观看| 久久精品三级| 亚洲图中文字幕| 一区二区视频在线观看| 欧美视频一区二区三区| 久久久免费精品| 99在线|亚洲一区二区| 国产在线播放一区二区三区| 欧美精品久久久久久久| 久久爱www.| 亚洲综合不卡| 亚洲美洲欧洲综合国产一区| 狠狠色伊人亚洲综合成人| 国产精品久久久久久亚洲调教| 美玉足脚交一区二区三区图片| 欧美在线视频免费观看| 亚洲色诱最新| 亚洲精品一区在线观看| 亚洲国产成人av在线| 国产一区二区三区四区老人| 欧美视频国产精品| 欧美日韩成人精品| 美女啪啪无遮挡免费久久网站| 校园激情久久| 亚洲欧美日韩中文视频| 一区二区高清在线观看| 亚洲国产精品福利| 黄色精品一区| 很黄很黄激情成人| 国产一区香蕉久久| 午夜免费日韩视频| 黄色国产精品| 99精品福利视频| 国产日韩欧美亚洲一区| 欧美系列电影免费观看| 欧美激情一区二区三级高清视频| 蜜桃av一区二区在线观看| 久久精品免费| 久久国产黑丝| 久久深夜福利| 久久米奇亚洲| 另类欧美日韩国产在线| 免费人成网站在线观看欧美高清| 久久久久久久久久久久久久一区| 欧美在线精品一区| 久久精品123| 免费欧美电影| 男女精品网站| 欧美电影电视剧在线观看| 欧美激情综合在线| 欧美三级视频在线| 国产精品久久久久久亚洲毛片| 国产美女精品| 在线高清一区| 亚洲伦理中文字幕| 亚洲一区尤物| 久久久青草青青国产亚洲免观| 久久综合成人精品亚洲另类欧美| 久久嫩草精品久久久久| 欧美成人网在线| 欧美日韩精品一区二区在线播放 | 亚洲视频在线观看网站| 91久久国产综合久久| 欧美色欧美亚洲另类七区| 亚洲第一页自拍| 亚洲日韩成人| 亚洲视频观看| 亚洲欧美色一区| 欧美成人午夜视频| 亚洲天堂av电影| 亚洲日本一区二区| 伊人久久婷婷色综合98网| 亚洲精品国产无天堂网2021| 一本色道久久综合| 亚洲一区二区在线视频| 久久久精品动漫| 久久人人爽人人| 欧美日韩国产综合一区二区| 国产一区二区电影在线观看| 亚洲电影在线播放| 亚洲综合不卡| 欧美精品在线免费播放| 国产精品一区二区视频| 亚洲国产日韩欧美| 性xx色xx综合久久久xx| 欧美黑人国产人伦爽爽爽| 国产欧美在线视频| 妖精成人www高清在线观看| 久久久精品国产一区二区三区| 欧美日韩精品免费在线观看视频| 国产视频亚洲精品| aa级大片欧美| 久久综合中文色婷婷| 国产精品免费看片| 99re热这里只有精品视频| 久久久久国产免费免费| 久久成人免费网| 国产精品久久久久久久久久ktv| 亚洲国产欧美精品| 欧美日韩国内| 亚洲第一区中文99精品| 久久精品视频网| 国产亚洲欧美日韩美女| 亚洲视频一二| 欧美视频免费| 亚洲毛片在线看| 欧美成人免费视频| 亚洲国产成人91精品| 久久激情五月婷婷| 国产日韩精品一区| 久久精品视频网| 国产一区二区精品久久99| 亚洲欧美日韩精品久久久| 国产精品vip| 亚洲天堂男人| 国产日韩欧美| 久久成人综合视频| 红桃视频一区| 欧美大学生性色视频| 亚洲精品乱码久久久久久蜜桃91| 欧美精品色网| 一区二区三区国产精华| 欧美日韩伊人| 亚洲无吗在线| 国产精品香蕉在线观看| 欧美亚洲系列| 含羞草久久爱69一区| 久久一区中文字幕| 亚洲精品三级| 国产精品久久久久久久浪潮网站| 午夜天堂精品久久久久 | 亚洲精品专区| 欧美精品18+| 午夜精品国产更新| 激情国产一区| 欧美大片第1页| 亚洲在线播放| 伊人蜜桃色噜噜激情综合|