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 對...