首頁 >後端開發 >php教程 >Yii源碼解讀-服務定位器(Service Locator)

Yii源碼解讀-服務定位器(Service Locator)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原創
2016-07-29 08:57:50974瀏覽

SL的目的也是解耦,並且非常適合基於服務和元件的應用。

Service Locator扮演了一個運行時的連結器的角色,可以在運行時動態地修改一個類別所要選用的服務, 而不必對類作任何的修改。

一個類別可以在運作時,有針對性地增減、替換所要用到的服務,從而得到一定程度的最佳化。

實作服務提供者、服務使用方完全的解耦,方便獨立測試和程式碼跨框架重複使用。

基本功能

Yii中的SL由yiidiServiceLocator實作

<code>class ServiceLocator extends Component{
    // 用于缓存服务、组件等的实例
    private $_components = [];
    
    // 保存服务和组件的定义,通常为配置数组,可以用来创建具体的实例
    private $_definitions = [];
    
    // 重载了getter, 使得访问服务和组件与访问类的属性一样。
    // 保留了原来Component的getter所具有的功能
    public function __get($name){}
}</code>

資料結構

SL提供了註冊服務和元件的方法。

$_components用於快取SL中的元件或服務的實例,為可讀寫的屬性。

參考

以上就介紹了Yii原始碼解讀-服務定位器(Service Locator),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn