Heim >Backend-Entwicklung >PHP-Tutorial >Yii源码解读-服务定位器(Service Locator)
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>
数据结构
SL提供了注册服务和组件的方法。
$_components用于缓存SL中的组件或服务的实例,为可读写的属性。
参考
以上就介绍了Yii源码解读-服务定位器(Service Locator),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。