php的依賴注入詳解

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

依賴注入

理解:

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

  2. 簡單來說依賴注入是通過構造注入,函數調用或者屬性的設定等來提供組件的依賴關係。

控制反轉

理解:

  • 一個系統通過組織控制和對象的完全分離來實現”控制反轉”。對於依賴注入,這就意味著通過在系統的其他地方控制或執行個體化依賴對象,從而實現瞭解耦。

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

注意

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

依賴反轉

理解:

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

例子:

<?phpnamespace Database;class Database{    protected $adapter;    public function __construct(AdapterInterface $adapter)    {        $this->adapter = $adapter;    }}interface AdapterInterface {}class MysqlAdapter implements AdapterInterface {}

好處:

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

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

相關推薦:



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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.