php service locator,Yii源码解读-服务定位器(ServiceLocator)
SL的目的也是解耦,并且非常适合基于服务和组件的应用。
Service Locator充当了一个运行时的链接器的角色,可以在运行时动态地修改一个类所要选用的服务, 而不必对类作任何的修改。
一个类可以在运行时,有针对性地增减、替换所要用到的服务,从而得到一定程度的优化。
实现服务提供方、服务使用方完全的解耦,便于独立测试和代码跨框架复用。
基本功能
Yii中的SL由yii\di\ServiceLocator实现class ServiceLocator extends Component{
// 用于缓存服务、组件等的实例
private $_components = [];
// 保存服务和组件的定义,通常为配置数组,可以用来创建具体的实例
private $_definitions = [];
// 重载了getter, 使得访问服务和组件与访问类的属性一样。
// 保留了原来Component的getter所具有的功能
public function __get($name){}
}
数据结构
SL提供了注册服务和组件的方法。
$_components用于缓存SL中的组件或服务的实例,为可读写的属性。
参考
以上就介绍了Yii源码解读-服务定位器(Service Locator),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
php service locator,Yii源码解读-服务定位器(ServiceLocator)相关推荐
- php yii框架源码,yii 源码解读
date: 2017-11-21 18:15:18 title: yii 源码解读 本篇博客阅读指南: php & 代码提示: 工欲善其事必先利其器 yii 源码阅读指南: 整体上全貌上进行了 ...
- ExecutorService源码解读
ExecutorService源码解读 〇.[源码版本] jdk 1.8 一.ExecutorService接口详解 1.ExecutorService关闭方法概述 [举例1]代码示例 2.Execu ...
- Slim 框架源码解读
0x00 前言 Slim 是由<PHP The Right Way>作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim ...
- 知秋源码解读分享系列
作为一个乐于分享的人,我希望通过一些成熟优秀的代码库,来向大家展示读源码思路以及阐述编程方面的技巧,也希望大家从中思考并得到属于自己的一套编程方法论. 半年以来,已进行72小时时长的源码解读分享视频录 ...
- tomcat源码解读(一)
tomcat源码解读(一) 什么是 tomcat ? Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术 规范, ...
- PackageManagerService Android 8.1 源码解读 01
一.PackageManagerService 是什么? 答: PackageManagerService(简称 [PKMS]),是 Android 系统中核心服务之一,负责应用程序的安装,卸载,信息 ...
- 【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)
目录 1. 什么是类加载器 2. 类加载器加载的过程 3. Class文件读取来源 4. 类加载器的分类 5. 那些操作会初始化类加载器 6. 类加载器的双亲委派机制 6.1 双亲委派机制机制的好处 ...
- 【Android】OkHttp源码解读逐字稿(2)-OkHttpClient
目录 0.前言 1.各个属性浅析 01.dispatcher 02.connectionPool 03.interceptors&networkInterceptors 04.eventLis ...
- Bert系列(二)——源码解读之模型主体
本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...
最新文章
- 在DataTable中创建计算列
- 《你的灯亮着吗》读书笔记1
- 【转】在SQL Server中通过SQL语句实现分页查询
- cuda error invalid argument
- 微信实时Look-alike算法分享赏析
- 委内瑞拉通胀这么厉害,为什么有钱人不去圈地、买房?
- 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem
- 推荐系统遇上深度学习(十一)--神经协同过滤NCF原理及实战
- python 智能造句_[零基础学Python]正规地说一句话
- (读书笔记)蔡康永的说话之道
- 天空的心事,只有云懂
- python docx 合并文档 图片_Python合并word文档制作电子书
- 让行动持续下去的动力-《刻意练习》读后感
- LOL中那些不可错过的精彩对局!!!
- matlab如何编写网页,[转载]如何使用matlab在网页中作图
- Apk脱壳圣战之---如何脱掉 梆梆加固 的保护壳
- 浏览器使常用快捷键——收藏
- 广东2007新登记软件产品清单(转载)
- 程序员怎么才能快速熟悉掌握一个项目
- 基于MPC的隐私计算技术——隐私聚合
热门文章
- java数组随机排序_JAVA 生成随机数数组,并排序输出
- while (true) 和 for (;;) 到底哪个更快?
- 每日一皮:资深老鸟看实习生写代码...
- 印象笔记终于支持Markdown了 !你还会再用其他笔记吗?
- 一文让你秒懂AQS,附带源码剖析!
- html不支持png%3e,关于Adobe Flash CS3无法导入png格式图片的修复方法(真正解决问题)...
- “文艺复兴” ConvNet卷土重来,压过Transformer FAIR重新设计纯卷积新架构
- Leetcode84 柱状图中最大的矩形 详细的解法
- 轻量级高精度分割网络推荐
- OpenCV-Python 雪花飘落特效