首頁 >後端開發 >php教程 >php的依賴注入詳解

php的依賴注入詳解

韦小宝
韦小宝原創
2018-03-14 12:44:112742瀏覽

這篇文章講述了PHP的依賴注入,對於php依賴注入不太了解的同學但是有點感興趣的那麼就更要看看本篇文章咯,廢話不多說了,我們直接來看看php的依賴注入吧!

依賴注入

理解:

  1. 是一種允許我們從硬編碼的依賴中解耦出來,從而在運行時或編譯時能夠修改的軟體設計模式

  2. 簡單來說依賴注入是透過建構注入,函數呼叫或屬性的設定等來提供元件的依賴關係。

控制反轉

理解:

  • #一個系統透過組織控制和物件的完全分離來實現」控制反轉”。對於依賴注入,這意味著透過在系統的其他地方控製或實例化依賴對象,從而實現了解耦。

  • 例如MVC 框架通常會提供超類別或基本的控制器類別以便其他控制器可以透過繼承來獲得對應的依賴

#注意

  • 因為對基底類別的繼承是可以選擇的,所以這種方式是可以完全解除依賴,不屬於依賴注入

#依賴反轉

理解:

  • 依賴反轉準則是物件導向設計準則S.O.L.I.D 中的“D” ,倡導「依賴抽象而不是具體」。簡單來說就是依賴應該是介面/約定或抽象類別,而不是具體的實作。

範例:

<?php
namespace Database;

class Database
{
    protected $adapter;

    public function __construct(AdapterInterface $adapter)
    {
        $this->adapter = $adapter;
    }
}

interface AdapterInterface {}

class MysqlAdapter implements AdapterInterface {}

好處:

  • #假設你工作的團隊中,一位同事負責設計適配器。在第一個範例中,我們需要等待適配器設計完之後才能單元測試。現在由於依賴是一個介面/約定,我們可以輕鬆地模擬介面測試,因為我們知道同事會基於約定實作那個適配器

  • 程式碼擴充性變得更高。如果一年之後我們決定要遷移到不同的資料庫,我們只需要寫一個實作對應介面的適配器並且注入進去,由於適配器遵循介面的約定,我們不需要額外的重構。

相關推薦:



PHP類別的反射實作依賴注入過程詳解

PHP基於反射機制實作自動依賴注入的方法詳解

#

以上是php的依賴注入詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn