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

理解php依賴注入和控制反轉
來源:易賢網 閱讀:1436 次 日期: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依賴注入和控制反轉
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产亚洲一二三区| 中文字幕亚洲综合久久菠萝蜜| 国产欧美日韩久久| 91在线观看视频| 一区二区三区电影在线播| 欧美人牲a欧美精品| 激情深爱一区二区| 亚洲三级在线看| 欧美精品在线观看一区二区| 国产精品一区专区| 亚洲大片在线观看| 久久精品综合网| 精品视频在线视频| 成人av影院在线| 免费黄网站欧美| 中文字幕日本不卡| 精品精品欲导航| 欧美亚洲一区二区在线观看| 国产精品一区在线观看你懂的| 亚洲精品欧美综合四区| 久久奇米777| 欧美日韩国产精选| 色综合久久综合| 国产成人免费视频网站高清观看视频| 亚洲高清免费一级二级三级| 国产丝袜欧美中文另类| 欧美一区二区三区视频| 色哟哟国产精品免费观看| 国产乱码精品一区二区三区av| 五月天久久比比资源色| 1000部国产精品成人观看| wwwwxxxxx欧美| 欧美成人一区二区三区片免费| 日本精品一区二区三区四区的功能| 国产麻豆精品久久一二三| 免费在线观看成人| 午夜影院久久久| 亚洲自拍偷拍麻豆| 一区二区三区四区精品在线视频| 欧美激情一二三区| 国产欧美一区二区精品性色超碰| 欧美一区二区女人| 欧美巨大另类极品videosbest | 亚洲午夜免费电影| 亚洲欧美日韩在线| 中文字幕在线一区免费| 中文字幕第一区二区| 久久婷婷国产综合国色天香| 精品国产免费久久 | 日本午夜一区二区| 亚洲国产精品一区二区尤物区| 亚洲欧洲精品一区二区精品久久久| 国产欧美日韩卡一| 18成人在线观看| 亚洲日穴在线视频| 亚洲精选在线视频| 偷拍亚洲欧洲综合| 日本人妖一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 奇米综合一区二区三区精品视频 | 91免费视频大全| 色狠狠一区二区| 欧美日韩国产高清一区二区 | 麻豆精品视频在线观看| 久久精品国产精品青草| 国产综合久久久久久久久久久久| 国产精品系列在线播放| bt7086福利一区国产| 欧美中文字幕一区| 欧美一二三四在线| 国产人伦精品一区二区| 亚洲日本韩国一区| 亚洲国产裸拍裸体视频在线观看乱了| 日韩精彩视频在线观看| 国产精品中文欧美| 91电影在线观看| 精品欧美一区二区在线观看| 中文幕一区二区三区久久蜜桃| 亚洲精品一二三区| 久久精品国产在热久久| 不卡在线观看av| 欧美精品色一区二区三区| www国产亚洲精品久久麻豆| 有码一区二区三区| 另类的小说在线视频另类成人小视频在线 | 久久只精品国产| 综合电影一区二区三区 | 免费成人在线观看| hitomi一区二区三区精品| 欧日韩精品视频| 久久久99久久| 午夜精品福利一区二区蜜股av| 成人性生交大片免费看中文网站| 91精品福利在线| 欧美国产一区视频在线观看| 五月天精品一区二区三区| jvid福利写真一区二区三区| 欧美一级欧美一级在线播放| 亚洲视频 欧洲视频| 久久99深爱久久99精品| 欧美最猛性xxxxx直播| 中文幕一区二区三区久久蜜桃| 蜜臀av性久久久久蜜臀av麻豆| 色播五月激情综合网| 国产精品素人一区二区| 奇米影视一区二区三区| 欧美在线短视频| 国产精品理伦片| 国产精品99久久久久久久女警| 欧美一区二区视频在线观看2020 | 欧美四级电影在线观看| 国产精品乱子久久久久| 国产一区二区91| 日韩精品一区二| 六月丁香婷婷久久| 91精品麻豆日日躁夜夜躁| 亚洲自拍与偷拍| 日本道免费精品一区二区三区| 成人欧美一区二区三区| 成人国产精品免费观看视频| 久久影院视频免费| 极品美女销魂一区二区三区免费| 在线观看91av| 日韩av电影天堂| 日韩女同互慰一区二区| 另类中文字幕网| 久久五月婷婷丁香社区| 国产自产视频一区二区三区| 久久综合九色综合97婷婷女人| 国产中文字幕一区| 久久九九久精品国产免费直播| 国产成人自拍在线| 日韩一区二区电影| 天天色综合天天| 日韩女优毛片在线| 国产精品主播直播| 国产精品区一区二区三| 99久久精品国产毛片| 亚洲精品乱码久久久久久黑人| 欧美性猛交xxxx黑人交| 日本不卡一区二区三区高清视频| 日韩美女视频在线| 国产精品主播直播| 日韩欧美一级在线播放| 久久99国产乱子伦精品免费| 欧美精品一区二区三| 成人短视频下载| 亚洲一区二区三区爽爽爽爽爽| 91精品欧美一区二区三区综合在 | 久久精品国产亚洲高清剧情介绍| 精品久久久久av影院| 成人激情小说网站| 亚洲国产精品影院| 久久久午夜精品| 日本韩国欧美三级| 黄网站免费久久| 亚洲综合一区在线| 日韩免费高清av| 97国产精品videossex| 男女激情视频一区| 亚洲欧洲日韩av| 欧美大片在线观看| 在线视频国产一区| 久久99精品国产.久久久久| 亚洲欧洲综合另类| 精品久久久久久久久久久久久久久久久| 成人av电影在线播放| 日韩国产高清影视| 亚洲品质自拍视频网站| 亚洲精品一区二区三区四区高清| 99久久伊人精品| 久久成人免费日本黄色| 一区二区三区高清在线| 欧美激情中文字幕| 日韩亚洲欧美高清| 在线精品视频免费观看| 国产成人aaa| 久久精品国产第一区二区三区| 亚洲永久精品大片| 一色屋精品亚洲香蕉网站| 精品国产凹凸成av人导航| 欧美日韩中文字幕精品| 91丨九色丨蝌蚪丨老版| 国产成人免费网站| 天天综合天天综合色| 亚洲欧洲av在线| 国产精品私人自拍| 国产欧美日韩三区| 日韩一区和二区| 在线观看免费一区| 99国产精品久久| kk眼镜猥琐国模调教系列一区二区| 蜜臂av日日欢夜夜爽一区| 五月激情综合网| 五月激情综合婷婷| 亚洲国产精品天堂| 一区二区三区在线影院| 亚洲国产成人一区二区三区| 日韩欧美亚洲另类制服综合在线| 制服丝袜一区二区三区|