PHP控制反轉(IOC)

2022-10-11 17:54:12 字數 853 閱讀 9577

控制翻**ioc(inversion of control)控制反轉模式;控制反轉是將對3類(元件間)的依賴關係從程式內部提到外部來管理;

概念理解

我們先來介紹控制反轉,依賴注入,這兩個概念我們可以認為他們表達的同一種意思,舉個通俗的例子,我們使用者登入需要提供記錄日誌的功能,可以選擇使用檔案或者資料庫。下面我們用**來演示。

// 定義寫日誌的介面規範

inte***ce log

// 檔案記錄日誌

class filelog implements log

}// 資料庫記錄日誌

class databaselog implements log

}// 程式操作類

class user

public function login()

}$user = new user();

$user->login();

上面的寫法可以實現記錄日誌的功能,但是有乙個問題,假設現在想用資料庫記錄日誌的話,我們就得修改user類,這份**沒達到解耦合,也不符合程式設計開放封閉原則,那如何修改呢?我們可以把日誌處理類通過建構函式方式傳遞進去。下面我們試著修改user類的**。

class user 

public function login()

}$user = new user(new databaselog());

$user->login();

這樣想用任何方式記錄操作日誌都不需要去修改過user類了,只需要通過建構函式引數傳遞就可以實現,其實這就是「控制反轉」。不需要自己內容修改,改成由外部外部傳遞。這種由外部負責其依賴需求的行為,我們可以稱其為 「控制反轉(ioc)」。

IoC控制反轉

首先假設有乙個需求,類business需要呼叫類dependency的方法f 1 按照日常的做法,得到下面的 類dependency public class dependency 類business public class business public void dosomething 2 對...

IOC 控制反轉

ioc是物件導向程式設計中的一種設計原則,可以借助 第三方 來減低計算機 之間的 耦合度 其中最常見的方式叫做依賴注入 dependency injection,簡稱di 還有一種方式叫 依賴查詢 dependency lookup 通過控制反轉,物件在被建立的時候,由乙個調控系統內所有物件的外界實...

IOC 控制反轉

想說說ioc inversion of control,控制反轉 這是spring的核心,貫穿始終。所謂ioc,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。這是什麼意思呢,舉個簡單的例子,我們是如何找女朋友的?常見的情況是,我們到處去看 有長得漂亮身材又好的m...