最新下載
24小時閱讀排行榜
- 1 HTML如何設置畫中畫關閉樣式?picture-in-picture-close偽類的作用是什么?
- 2 不同宗教節(jié)日的共存現(xiàn)象?
- 3 XPath的通配符怎么匹配所有元素?
- 4 lumion6怎么導入動畫的fbx文件
- 5 支付寶小荷包怎么修改名稱 支付寶小荷包重命名操作指南
- 6 文件名后綴blend
- 7 如何檢查FBX動作文件是否完整?3種驗證方法對比
- 8 Go函數(shù)中if-else分支完整返回卻仍報“缺少返回語句”錯誤解析
- 9 HTML如何設置下載鏈接?a標簽的download屬性怎么用?
- 10 VSCode調(diào)試FPGA的DDR接口(內(nèi)存訪問優(yōu)化,性能調(diào)優(yōu))
- 11 如何清除瀏覽器的頑固緩存?
- 12 Go語言編譯器對if-else返回語句的識別:歷史問題與現(xiàn)代實踐
- 13 YII框架的性能監(jiān)控是什么?YII框架如何跟蹤請求?
- 14 悟空瀏覽器轉(zhuǎn)存的文件怎么改名字
- 15 HTML如何設置文章區(qū)域?article標簽的作用是什么?
最新教程
-
- PHP新手語法線上課程教學
- 4634 2025-06-12
-
- 支付寶沙箱支付(個人也能用的支付)
- 10638 2024-08-19
-
- 麻省理工大佬Python課程
- 14144 2024-05-31
-
- Swoole5 Hyperf3 php8新版本協(xié)程框架講說
- 16248 2024-05-13
-
- 【web前端】Node.js快速入門
- 10908 2024-04-26
-
- 國外Web開發(fā)全棧課程全集
- 10616 2024-04-24
<?php namespace Auryn; class CachingReflector implements Reflector { const CACHE_KEY_CLASSES = 'auryn.refls.classes.'; const CACHE_KEY_CTORS = 'auryn.refls.ctors.'; const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.'; const CACHE_KEY_FUNCS = 'auryn.refls.funcs.'; const CACHE_KEY_METHODS = 'auryn.refls.methods.'; private $reflector; private $cache; public function __construct(Reflector $reflector = null, ReflectionCache $cache = null) { $this->reflector = $reflector ?: new StandardReflector; $this->cache = $cache ?: new ReflectionCacheArray; } public function getClass($class) { $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class); if (!$reflectionClass = $this->cache->fetch($cacheKey)) { $reflectionClass = new \ReflectionClass($class); $this->cache->store($cacheKey, $reflectionClass); } return $reflectionClass; }
我們的思路是應用程序用到一個Foo類,就會創(chuàng)建Foo類并調(diào)用Foo類的方法,假如這個方法內(nèi)需要一個Bar類,就會創(chuàng)建Bar類并調(diào)用Bar類的方法,而這個方法內(nèi)需要一個Bim類,就會創(chuàng)建Bim類,接著做些其它工作。使用依賴注入的思路是應用程序用到Foo類,F(xiàn)oo類需要Bar類,Bar類需要Bim類,那么先創(chuàng)建Bim類,再創(chuàng)建Bar類并把Bim注入,再創(chuàng)建Foo類,并把Bar類注入,再調(diào)用Foo方法,F(xiàn)oo調(diào)用Bar方法,接著做些其它工作。這就是控制反轉(zhuǎn)模式。依賴關系的控制反轉(zhuǎn)到調(diào)用鏈的起點。這樣你可以完全控制依賴關系,通過調(diào)整不同的注入對象,來控制程序的行為。例如Foo類用到了memcache,可以在不修改Foo類代碼的情況下,改用redis。
使用依賴注入容器后的思路是應用程序需要到Foo類,就從容器內(nèi)取得Foo類,容器創(chuàng)建Bim類,再創(chuàng)建Bar類并把Bim注入,再創(chuàng)建Foo類,并把Bar注入,應用程序調(diào)用Foo方法,F(xiàn)oo調(diào)用Bar方法,接著做些其它工作.總之容器負責實例化,注入依賴,處理依賴關系等工作。


相關推薦

