Heim Backend-Entwicklung PHP-Tutorial Yii源码解读-服务定位器(Service Locator)

Yii源码解读-服务定位器(Service Locator)

Jul 29, 2016 am 08:57 AM
component private

SL的目的也是解耦,并且非常适合基于服务和组件的应用。

Service Locator充当了一个运行时的链接器的角色,可以在运行时动态地修改一个类所要选用的服务, 而不必对类作任何的修改。

一个类可以在运行时,有针对性地增减、替换所要用到的服务,从而得到一定程度的优化。

实现服务提供方、服务使用方完全的解耦,便于独立测试和代码跨框架复用。

基本功能

Yii中的SL由yii\di\ServiceLocator实现

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

数据结构

SL提供了注册服务和组件的方法。

$_components用于缓存SL中的组件或服务的实例,为可读写的属性。

参考

以上就介绍了Yii源码解读-服务定位器(Service Locator),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1665
14
PHP-Tutorial
1269
29
C#-Tutorial
1249
24
Interviewer: Der Unterschied zwischen @Configuration und @Component Interviewer: Der Unterschied zwischen @Configuration und @Component Aug 15, 2023 pm 04:29 PM

Der Aufruf der annotierten Methode @Bean in der Klasse @Configuration gibt das gleiche Beispiel zurück; der Aufruf der annotierten Methode @Bean in der Klasse @Component gibt eine neue Instanz zurück.

Was bedeutet privat in Java? Was bedeutet privat in Java? Nov 24, 2022 pm 06:27 PM

In Java bedeutet „privat“ „privat“ und ist ein Zugriffskontrollmodifikator, der zum Ändern von Klassen, Eigenschaften und Methoden verwendet wird. Mit „private“ geänderte Klassenmitglieder können nur von den Methoden der Klasse selbst aufgerufen und geändert werden und können von keiner anderen Klasse (einschließlich Unterklassen der Klasse) aufgerufen und referenziert werden. Daher verfügt der private Modifikator über die höchste Schutzstufe.

Wie vue3 die Tags defineAsyncComponent und Component verwendet, um dynamische Rendering-Komponenten zu implementieren Wie vue3 die Tags defineAsyncComponent und Component verwendet, um dynamische Rendering-Komponenten zu implementieren May 12, 2023 pm 05:55 PM

1. Grundlegende dynamische Einführung von Komponenten: Einfache dynamische Einführung bedeutet, dass das Front-End weiß, welche Komponenten eingeführt werden müssen, und mehrere Komponenten in die übergeordnete Komponente einführt, diese jedoch nicht rendert, nachdem bestimmte Bedingungen erfüllt sind Ort angegebene Komponente. import{reactive,ref,shallowReactive,onActivated,defineAsyncComponent,}from'vue';constcustomModal=defineAsyncComponent(()=>import('./modal/CustomM

Tipps zur Verwendung von Mixin, Extend, Component und anderen APIs zur Implementierung der Komponentenanpassung in Vue Tipps zur Verwendung von Mixin, Extend, Component und anderen APIs zur Implementierung der Komponentenanpassung in Vue Jun 25, 2023 pm 03:28 PM

Vue.js ist ein beliebtes Front-End-Framework, das viele APIs für die Komponentenanpassung bereitstellt. In diesem Artikel werden die APIs Mixin, Extend, Component und andere in Vue vorgestellt, um Ihnen dabei zu helfen, die Fähigkeiten der Komponentenanpassung zu erlernen. Mixin Mixin ist eine Möglichkeit, Komponentencode in Vue wiederzuverwenden. Dadurch können wir bereits geschriebenen Code in verschiedenen Komponenten wiederverwenden und so die Notwendigkeit reduzieren, doppelten Code zu schreiben. Beispielsweise können wir Mixins verwenden, um mehrere Gruppen zusammenzuführen

Detaillierte Erläuterung privater Zugriffsmodifikatoren für Java-Funktionen Detaillierte Erläuterung privater Zugriffsmodifikatoren für Java-Funktionen Apr 25, 2024 pm 04:48 PM

Private ist ein Java-Zugriffsmodifikator, der den Zugriff auf eine Funktion nur auf die Klasse beschränkt, in der sie definiert ist, einschließlich: Auf die Funktion kann in anderen Klassen nicht zugegriffen werden. Die Funktion ist auch in Unterklassen nicht zugänglich.

Java-Programme weisen unterschiedliche Zugriffsebenen auf Java-Programme weisen unterschiedliche Zugriffsebenen auf Aug 19, 2023 pm 10:09 PM

Zugriffsmodifikatoren werden verwendet, um die Sichtbarkeit bestimmter Klassen, Schnittstellen, Variablen, Methoden, Konstruktoren, Datenmitglieder und Setter-Methoden in der Programmiersprache Java festzulegen. In der Java-Umgebung gibt es verschiedene Arten von Zugriffsmodifikatoren. Standard: Wenn wir eine Funktion deklarieren, ist sie nur in einem bestimmten Paket sichtbar. Privat – Wenn wir eine Funktion deklarieren, ist sie nur in einer bestimmten Klasse verfügbar

Was ist die Komponente von React? Was ist die Komponente von React? Dec 05, 2022 pm 05:54 PM

In React bedeutet Komponente auf Chinesisch „Komponente“. Dabei handelt es sich um eine gekapselte UI-Komponente mit unabhängigen Funktionen. Der anzuzeigende Inhalt ist in mehrere unabhängige Teile unterteilt, und jeder dieser Teile ist eine Komponente. Komponenten haben zwei wichtige Dinge: zum einen Eigenschaften und zum anderen den Zustand. Die Eigenschaften einer Komponente werden ihr von der übergeordneten Komponente zugewiesen und speichern die Anforderungen der übergeordneten Komponente an die untergeordnete Komponente. Auf die Eigenschaften kann innerhalb der Komponente zugegriffen werden, der Status der Komponente kann jedoch nicht geändert werden durch die Komponente selbst zur Speicherung. Der aktuelle Zustand der Komponente kann geändert werden.

Was tun, wenn „react.component' einen Fehler meldet? Was tun, wenn „react.component' einen Fehler meldet? Dec 20, 2022 am 10:49 AM

Lösung für den Fehler „react.component“: 1. Öffnen Sie die entsprechende Reaktionsdatei, suchen Sie nach der Anweisung „class Counter erweitert Component {static propTypes = {...“ und ändern Sie das Gleichheitszeichen in einen Doppelpunkt. 2. Ändern Sie „{; „presets“: [„react“, „es2015“, „stage-0“]}“ reicht aus.

See all articles