成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP依賴注入(代碼全篇)

felix0913 / 796人閱讀

摘要:依賴注入傳統(tǒng)的思路應(yīng)用程序用到一個(gè)類就會(huì)創(chuàng)建類并調(diào)用類的方法。這樣你可以完全控制依賴關(guān)系,通過調(diào)整不同的注入對(duì)象,來控制程序的行為。例如類用到了,可以在不修改類代碼的情況下,改用。

依賴注入

傳統(tǒng)的思路

應(yīng)用程序用到一個(gè)Foo類,就會(huì)創(chuàng)建Foo類并調(diào)用Foo類的方法。
假如這個(gè)方法內(nèi)需要一個(gè)Bar類,就會(huì)創(chuàng)建Bar類并調(diào)用Bar類的方法。
而這個(gè)方法內(nèi)需要一個(gè)Bim類,就會(huì)創(chuàng)建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();

依賴注入

應(yīng)用程序用到Foo類,F(xiàn)oo類需要Bar類,
Bar類需要Bim類,那么先創(chuàng)建Bim類,再創(chuàng)建Bar類并把Bim注入,再創(chuàng)建Foo類,并把Bar類注入,
再調(diào)用Foo方法,F(xiàn)oo調(diào)用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();

這就是控制反轉(zhuǎn)模式。依賴關(guān)系的控制反轉(zhuǎn)到調(diào)用鏈的起點(diǎn)。這樣你可以完全控制依賴關(guān)系,通過調(diào)整不同的注入對(duì)象,來控制程序的行為。
例如Foo類用到了memcache,可以在不修改Foo類代碼的情況下,改用redis。
使用依賴注入容器后的思路是應(yīng)用程序需要到Foo類,就從容器內(nèi)取得Foo類,容器創(chuàng)建Bim類,再創(chuàng)建Bar類并把Bim注入,再創(chuàng)建Foo類,并把Bar注入,應(yīng)用程序調(diào)用Foo方法,F(xiàn)oo調(diào)用Bar方法,接著做些其它工作.

擴(kuò)展:容器負(fù)責(zé)實(shí)例化,注入依賴,處理依賴關(guān)系等工作。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31001.html

相關(guān)文章

  • PHP+RabbitMQ實(shí)現(xiàn)消息隊(duì)列(代碼全篇)

    摘要:前言先安裝對(duì)應(yīng)的這里用的是不同的擴(kuò)展實(shí)現(xiàn)方式會(huì)有細(xì)微的差異擴(kuò)展地址具體以官網(wǎng)為準(zhǔn)介紹配置信息基類生產(chǎn)者類消費(fèi)者類消費(fèi)者可有多個(gè)配置交換機(jī)路由生產(chǎn)者路由只控制發(fā)送成功不接受消費(fèi)者是否收到頻道 前言 先安裝PHP對(duì)應(yīng)的RabbitMQ,這里用的是 php_amqp 不同的擴(kuò)展實(shí)現(xiàn)方式會(huì)有細(xì)微的差異. php擴(kuò)展地址: http://pecl.php.net/package/amqp 具...

    weakish 評(píng)論0 收藏0
  • PHP:消息系統(tǒng)-消息事物模式(代碼全篇)

    摘要:目錄介紹消息事物類主業(yè)務(wù)類事物類消息事物類消息標(biāo)簽未發(fā)送確認(rèn)發(fā)送發(fā)送成功已取消請(qǐng)求發(fā)送消息根據(jù)進(jìn)行處理只記錄消息數(shù)據(jù)不發(fā)送消息標(biāo)記消息為返回消息唯一標(biāo)識(shí)確認(rèn)發(fā)送消息根據(jù)對(duì)消息進(jìn)行處理發(fā)送消息數(shù)據(jù)標(biāo)記消息為消息發(fā)送成功后標(biāo)記消息為取消發(fā)送消息 目錄介紹 MessageTr.php 消息事物類 Business.php 主業(yè)務(wù)類 BusinessDb.php DB事物類 Mess...

    dkzwm 評(píng)論0 收藏0
  • dedecms5.7(織夢(mèng))源碼解析之程序安裝補(bǔ)全篇

    摘要:前言之前寫的織夢(mèng)源碼解析之程序安裝一文中,還有幾個(gè)值得講解的文件沒有提到,這里說明一下??偨Y(jié)安裝文件,到此真的結(jié)束了。 前言 之前寫的《dedecms5.7(織夢(mèng))源碼解析之程序安裝》一文中,還有幾個(gè)值得講解的文件沒有提到,這里說明一下。 代碼 templates目錄 該文件夾中,一共有step-1.html、step-2.html、step-3.html、step-4.html、st...

    pkhope 評(píng)論0 收藏0
  • PHP驗(yàn)證IOS原生支付是否成功(代碼全篇)

    摘要:前言原生支付后需要調(diào)用服務(wù)端接口進(jìn)行驗(yàn)證檢測(cè)是否真正的支付成功環(huán)境配置建議提成配置參數(shù)錯(cuò)誤操作成功支付驗(yàn)證蘋果支付認(rèn)證的憑證后的數(shù)據(jù)環(huán)境配置沙箱地址真實(shí)運(yùn)營(yíng)地址數(shù)據(jù)組裝日志記錄操作這兩行一定要加,不加會(huì)報(bào)錯(cuò)誤請(qǐng)求有錯(cuò)誤數(shù)據(jù)錯(cuò) 前言 IOS原生支付后,需要調(diào)用服務(wù)端接口進(jìn)行驗(yàn)證,檢測(cè)是否真正的支付成功!

    fuyi501 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<