黄p网站_在线看中文字幕_亚洲电影免费观看_成人激情视频_欧美成视频_中国av在线

依賴注入

Dependency Injection 依賴注入

EasySwoole 實現了簡單版的 IOC 容器,使用 IOC 容器 可以很方便地存儲/獲取資源,實現解耦。

使用依賴注入,最重要的一點好處就是有效地分離了對象和它所需要的外部資源,使得它們松散耦合,有利于功能復用,更重要的是使得程序的整個體系結構變得非常靈活。

在我們的日常開發中,創建對象的操作隨處可見,以至于對其十分熟悉的同時又感覺十分繁瑣,每次需要對象都需要親手將其 new 出來,甚至某些情況下由于壞編程習慣還會造成對象無法被回收,這是相當糟糕的。但更為嚴重的是,我們一直倡導的松耦合、少入侵原則,這種情況下變得一無是處。于是前輩們開始謀求改變這種編程陋習,考慮如何使用編碼更加解耦合,由此而來的解決方案是面向接口的編程。

注意:在服務啟動后,對 IOC容器 的獲取/注入僅限當前進程有效。不對其他 worker 進程產生影響。

方法列表

getInstance

用于獲取依賴注入組件 IoC 容器 對象。

使用示例:

$di = \EasySwoole\Component\Di::getInstance();

set

用于向 IoC 容器 中注入內容。

函數原型:set($key, $obj, ...$arg): void

  • $key: 鍵名。

  • $obj: 要注入的內容。支持注入對象名、對象實例、閉包、資源、字符串等各種常見變量。

  • $arg: 若注入的內容為 is_callable 類型,則可以設置該參數以供 callable 執行時傳入。

使用示例:

$di->set('test', new TestClass());
$di->set('test', TestClass::class);

// set 的時候儲存的是[類名, 方法名]的數組,需要自己手動調用 call_user_func() 執行(不要被錯誤與異常章節的 demo 誤解為會自動執行)
$di->set('test', [TestClass::class,'testFunction']);

// set 的時候傳遞了類名,get 的時候才去 new 對象,并且將可變變量傳遞進構造函數,返回實例化后的對象
$di->set('test', TestClass::class, $arg_one, $arg_tow);

Diset 方法為懶惰加載模式,若 set 一個對象名或者閉包,則該對象不會馬上被創建。

get

用戶獲取 IoC 容器 中某個注入的內容。

函數原型:get($key)

  • $key: 調用 set 方法時設置的鍵名。

使用示例:

$val = $di->get('test');

delete

用戶刪除 IoC 容器 中某個注入的內容。

函數原型:delete($key): void

  • $key: 調用 set 方法時設置的鍵名。

使用示例:

$di->delete('test');

clear

用于清空 IoC 容器 的所有內容。

函數原型:clear($key): void

  • $key: 調用 set 方法時設置的鍵名。
主站蜘蛛池模板: 亚洲网站在线观看 | 久久久精品一区二区 | 韩国精品一区二区三区 | 噜噜噜噜狠狠狠7777视频 | 国产精品美女视频 | 亚洲视频在线看 | 99色播 | 免费观看一级毛片 | 日韩成人小视频 | 日韩精品一区二区三区 | 国产精品久久久久久久久久东京 | 日韩国产欧美一区 | 亚洲国产成人精品久久 | 亚洲一区二区av | 亚洲精品一区二区三区在线 | 国产高清精品一区 | 国产精品久久久久久福利一牛影视 | 精品视频一区二区三区 | 亚洲 欧美 自拍偷拍 | 久久综合一区二区 | 久久精品久久久久久 | 亚洲欧美日韩精品 | 久久精品欧美一区二区三区不卡 | 国产三级在线免费观看 | 香蕉视频在线看 | 成人亚洲一区二区 | 91社区在线高清 | 成人av影片在线观看 | 一区二区三区四区在线 | www.五月婷| 亚洲精品一区二区三区四区高清 | 日韩一级大片 | 99草视频 | 国产精品欧美一区二区三区不卡 | 国产区视频 | 99热免费精品 | 日日视频 | 日韩一及片 | h视频网站在线 | 一区二区国产精品 | 91精品国产91久久久久久密臀 |