PHP簡單的IoC控制反轉實現

2021-06-28 22:51:47 字數 1354 閱讀 2251

fruit.php

<?php  

/**

* @author gonn,

*/

inte***ce fruit

private $color;

function getcolor()

function setcolor($value)

function showcolor()

} class banana implements fruit

function setcolor($value)

function showcolor()

} ?>

classfactory.php

類工廠實現了一些簡單功能,能夠解析指定的配置檔案,並根據配置檔案生成類,同時設定指定的屬性值:

<?php  

/**

* @author gonn,

*/

class classfactory

function getbean($class_id)

//找到第乙個,返回例項

return $obj;

} }

} }

?>

config.json

//備註使用雙反斜桿  

[ ]

},

] }

]

test.php

為類工廠指定上述配置檔案。我們可以看見,對配置檔案裡的不同id,返回了不同的類例項。呼叫每個例項的方法,分別輸出了red和yellow。可見,我們只需要改變配置檔案的內容,就可以返回不同的類例項,而不需修改程式源**。這就實現了簡單的 ioc 或者 di。

<?php  

include_once("classfactory.php");

$factory = new classfactory("config.json");

echo $fruit->showcolor() .'

';

$fruit = $factory->getbean("banana");

echo $fruit->showcolor() .'

';

?>

程式執行結果

view source

print?

banana color:yellow 

PHP控制反轉(IOC)

控制翻 ioc inversion of control 控制反轉模式 控制反轉是將對3類 元件間 的依賴關係從程式內部提到外部來管理 概念理解 我們先來介紹控制反轉,依賴注入,這兩個概念我們可以認為他們表達的同一種意思,舉個通俗的例子,我們使用者登入需要提供記錄日誌的功能,可以選擇使用檔案或者資料...

Python實現IOC控制反轉

用乙個字典儲存beanname和資源 初始化時先將beanname和資源註冊到字典中 然後用乙個dscriptor類根據beanname動態請求資源,從而實現控制反轉 coding utf 8 import os class beanfactory python版控制反轉 context 儲存bea...

IoC控制反轉

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