Maison développement back-end tutoriel php 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>
Copier après la connexion

数据结构

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

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

参考

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Intervieweur : La différence entre @Configuration et @Component Intervieweur : La différence entre @Configuration et @Component Aug 15, 2023 pm 04:29 PM

L’appel de la méthode annotée @Bean dans la classe @Configuration renvoie le même exemple ; l’appel de la méthode annotée @Bean dans la classe @Component renvoie une nouvelle instance.

Que signifie privé en Java Que signifie privé en Java Nov 24, 2022 pm 06:27 PM

En Java, private signifie « privé » et est un modificateur de contrôle d'accès utilisé pour modifier les classes, les propriétés et les méthodes. Les membres de la classe modifiés avec private ne peuvent être consultés et modifiés que par les méthodes de la classe elle-même, et ne peuvent être consultés et référencés par aucune autre classe (y compris les sous-classes de la classe, par conséquent, le modificateur private a le niveau de protection le plus élevé) ;

Comment vue3 utilise finishAsyncComponent et les balises de composants pour implémenter des composants de rendu dynamique Comment vue3 utilise finishAsyncComponent et les balises de composants pour implémenter des composants de rendu dynamique May 12, 2023 pm 05:55 PM

1. Introduction dynamique de base des composants : une introduction dynamique simple signifie que le frontal sait quels composants introduire et introduit plusieurs composants dans le composant parent, mais ne le restitue pas une fois que certaines conditions sont remplies, il sera rendu à un certain moment. emplacement. import{reactive,ref,shallowReactive,onActivated,defineAsyncComponent,}from'vue';constcustomModal=defineAsyncComponent(()=>import('./modal/CustomM

Conseils sur l'utilisation de mixin, extend, composant et autres API pour personnaliser les composants dans Vue Conseils sur l'utilisation de mixin, extend, composant et autres API pour personnaliser les composants dans Vue Jun 25, 2023 pm 03:28 PM

Vue.js est un framework frontal populaire qui fournit de nombreuses API pour la personnalisation des composants. Cet article présentera les API mixin, extend, composant et autres dans Vue pour vous aider à maîtriser les compétences de personnalisation des composants. Mixin Mixin est un moyen de réutiliser le code des composants dans Vue. Cela nous permet de réutiliser du code déjà écrit dans différents composants, réduisant ainsi le besoin d'écrire du code en double. Par exemple, nous pouvons utiliser des mixins pour nous aider à combiner plusieurs groupes

Explication détaillée des modificateurs d'accès privé pour les fonctions Java Explication détaillée des modificateurs d'accès privé pour les fonctions Java Apr 25, 2024 pm 04:48 PM

Private est un modificateur d'accès Java qui restreint l'accessibilité d'une fonction uniquement à la classe dans laquelle elle est définie, notamment : la fonction n'est pas accessible dans d'autres classes. La fonction n'est pas non plus accessible dans les sous-classes.

Les programmes Java affichent différents niveaux d'accès Les programmes Java affichent différents niveaux d'accès Aug 19, 2023 pm 10:09 PM

Les modificateurs d'accès sont utilisés pour définir la fonctionnalité de visibilité de certaines classes, interfaces, variables, méthodes, constructeurs, membres de données et méthodes de définition particulières dans le langage de programmation Java, nous avons différents types de modificateurs d'accès. Par défaut - Si nous déclarons une fonction, elle ne sera visible que dans un package spécifique. Privé- Si nous déclarons une fonction, elle ne sera disponible que dans une classe spécifique

Que faire si React.component signale une erreur Que faire si React.component signale une erreur Dec 20, 2022 am 10:49 AM

Solution à l'erreur react.component : 1. Ouvrez le fichier de réaction correspondant, recherchez l'instruction "class Counter extends Component {static propTypes = {..." et remplacez le signe égal par deux points ; 2. Modifiez "{" "presets": ["react", "es2015", "stage-0"]}" suffit.

Quel est le composant de réagir ? Quel est le composant de réagir ? Dec 05, 2022 pm 05:54 PM

Dans React, composant signifie « composant » en chinois, qui est un composant d'interface utilisateur encapsulé avec des fonctions indépendantes ; le contenu à afficher est divisé en plusieurs parties indépendantes, et chacune de ces parties est un composant. Les composants ont deux choses importantes, l’une sont les propriétés et l’autre l’état. Les propriétés d'un composant lui sont données par le composant parent et stockent les exigences du composant parent pour le composant enfant. Les propriétés sont accessibles dans le composant, mais elles ne peuvent pas être modifiées. L'état du composant est défini et utilisé. par le composant lui-même pour le stockage. L'état actuel du composant. L'état du composant peut être modifié.

See all articles