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)相关推荐

  1. php yii框架源码,yii 源码解读

    date: 2017-11-21 18:15:18 title: yii 源码解读 本篇博客阅读指南: php & 代码提示: 工欲善其事必先利其器 yii 源码阅读指南: 整体上全貌上进行了 ...

  2. ExecutorService源码解读

    ExecutorService源码解读 〇.[源码版本] jdk 1.8 一.ExecutorService接口详解 1.ExecutorService关闭方法概述 [举例1]代码示例 2.Execu ...

  3. Slim 框架源码解读

    0x00 前言 Slim 是由<PHP The Right Way>作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim ...

  4. 知秋源码解读分享系列

    作为一个乐于分享的人,我希望通过一些成熟优秀的代码库,来向大家展示读源码思路以及阐述编程方面的技巧,也希望大家从中思考并得到属于自己的一套编程方法论. 半年以来,已进行72小时时长的源码解读分享视频录 ...

  5. tomcat源码解读(一)

    tomcat源码解读(一) 什么是 tomcat ? Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术 规范, ...

  6. PackageManagerService Android 8.1 源码解读 01

    一.PackageManagerService 是什么? 答: PackageManagerService(简称 [PKMS]),是 Android 系统中核心服务之一,负责应用程序的安装,卸载,信息 ...

  7. 【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)

    目录 1. 什么是类加载器 2. 类加载器加载的过程 3. Class文件读取来源 4. 类加载器的分类 5. 那些操作会初始化类加载器 6. 类加载器的双亲委派机制 6.1 双亲委派机制机制的好处 ...

  8. 【Android】OkHttp源码解读逐字稿(2)-OkHttpClient

    目录 0.前言 1.各个属性浅析 01.dispatcher 02.connectionPool 03.interceptors&networkInterceptors 04.eventLis ...

  9. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

最新文章

  1. 在DataTable中创建计算列
  2. 《你的灯亮着吗》读书笔记1
  3. 【转】在SQL Server中通过SQL语句实现分页查询
  4. cuda error invalid argument
  5. 微信实时Look-alike算法分享赏析
  6. 委内瑞拉通胀这么厉害,为什么有钱人不去圈地、买房?
  7. 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem
  8. 推荐系统遇上深度学习(十一)--神经协同过滤NCF原理及实战
  9. python 智能造句_[零基础学Python]正规地说一句话
  10. (读书笔记)蔡康永的说话之道
  11. 天空的心事,只有云懂
  12. python docx 合并文档 图片_Python合并word文档制作电子书
  13. 让行动持续下去的动力-《刻意练习》读后感
  14. LOL中那些不可错过的精彩对局!!!
  15. matlab如何编写网页,[转载]如何使用matlab在网页中作图
  16. Apk脱壳圣战之---如何脱掉 梆梆加固 的保护壳
  17. 浏览器使常用快捷键——收藏
  18. 广东2007新登记软件产品清单(转载)
  19. 程序员怎么才能快速熟悉掌握一个项目
  20. 基于MPC的隐私计算技术——隐私聚合

热门文章

  1. java数组随机排序_JAVA 生成随机数数组,并排序输出
  2. while (true) 和 for (;;) 到底哪个更快?
  3. 每日一皮:资深老鸟看实习生写代码...
  4. 印象笔记终于支持Markdown了 !你还会再用其他笔记吗?
  5. 一文让你秒懂AQS,附带源码剖析!
  6. html不支持png%3e,关于Adobe Flash CS3无法导入png格式图片的修复方法(真正解决问题)...
  7. “文艺复兴” ConvNet卷土重来,压过Transformer FAIR重新设计纯卷积新架构
  8. Leetcode84 柱状图中最大的矩形 详细的解法
  9. 轻量级高精度分割网络推荐
  10. OpenCV-Python 雪花飘落特效