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

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
java中private是什么意思java中private是什么意思Nov 24, 2022 pm 06:27 PM

在java中,private的意思为“私有的”,是一种访问控制修饰符,用于修饰类、属性和方法。用private修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用;因此,private修饰符具有最高的保护级别。

面试官:@Configuration 和 @Component 的区别面试官:@Configuration 和 @Component 的区别Aug 15, 2023 pm 04:29 PM

调用@Configuration类中的@Bean注解的方法,返回的是同一个示例;而调用@Component类中的@Bean注解的方法,返回的是一个新的实例。

vue3怎么使用defineAsyncComponent与component标签实现动态渲染组件vue3怎么使用defineAsyncComponent与component标签实现动态渲染组件May 12, 2023 pm 05:55 PM

一、基础的动态引入组件:简单的动态引入的意思是,前端知道要引入哪些组件,将多个组件引入到父组件中,但不渲染它,满足一定条件后,才去在某个位置渲染指定的组件。import{reactive,ref,shallowReactive,onActivated,defineAsyncComponent,}from&#39;vue&#39;;constcustomModal=defineAsyncComponent(()=>import(&#39;./modal/CustomM

Vue 中使用 mixin、extend、component 等 API 实现组件定制的技巧Vue 中使用 mixin、extend、component 等 API 实现组件定制的技巧Jun 25, 2023 pm 03:28 PM

Vue.js是一个流行的前端框架,它提供了许多API用于组件的定制。本文将介绍Vue中mixin、extend、component等API,帮助您掌握组件定制的技巧。mixinmixin是Vue中重用组件代码的一种方式。它允许我们将已经编写的代码复用到不同的组件中,从而减少重复代码的编写。例如,我们可以使用mixin帮助我们在多个组

Java 函数的访问权限修饰符之 private 详解Java 函数的访问权限修饰符之 private 详解Apr 25, 2024 pm 04:48 PM

private是一种Java访问权限修饰符,它限制函数的可访问性,只允许在定义它的类中访问,包括:在其他类中无法访问该函数。在子类中也无法访问该函数。

Java程序展示不同的访问级别Java程序展示不同的访问级别Aug 19, 2023 pm 10:09 PM

Accessmodifiersareusedtosetthefeatureofvisibilityofsomeparticularclasses,interfaces,variables,methods,constructors,datamembers,andthesettermethodsinJavaprogramminglanguage.在Java环境中,我们有不同类型的访问修饰符。默认-如果我们声明一个函数,它只会在特定的包中可见。Private-如果我们声明一个函数,它只能在特定的类中可

react.component 报错怎么办react.component 报错怎么办Dec 20, 2022 am 10:49 AM

react.component报错的解决办法:1、打开相应的react文件,查找“class Counter extends Component {static propTypes = {...”语句,将等号改为冒号;2、修改“{ "presets": ["react", "es2015", "stage-0"]}”即可。

react的component是什么react的component是什么Dec 05, 2022 pm 05:54 PM

在react中,component中文意思为“组件”,是封装起来的具有独立功能的UI部件;将要展示的内容,分成多个独立部分,每一个这样的部分,就是一个组件。组件有两个重要的东西,一个是属性,一个是状态。组件的属性是父组件给它的,存储的是父组件对子组件的要求,在组件内部可以对属性进行访问,但不可以修改它;组件的状态,由组件自行定义和使用,用来存储组件当前状态,组件的状态可以修改。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器