摘要:服务容器接口是的简写,由组织制定的规范,是开发的实践标准。实现的容器类源码很简单,主要是传入变量,然后设置这个两个方法。原创文章,欢迎转载。原文链接地址作者发表日期
接着上篇 还有一些内容没有写,上篇已经把关于 Pimple 最主要的代码分析了一下,这篇主要是关于 PSR-11 兼容性的分析。
PSR-11 服务容器接口 PSRPSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准 。
有一份 PSR 中文版 推荐看看,不过由于是翻译的,难免不是很及时,但是对于理解 PSR 1 - PSR 7 还是很有帮助的。
PSR-11 是服务容器接口 。
interface ContainerInterface { public function get($id); public function has($id); }
只需要实现这个两个接口就行。
Pimple - PSR-11 兼容性Pimple 的作者自己也说了,由于历史原因,没有实现 PSR-11,但是提供了辅助类 。
1、PimplePsr11Container.php
2、PimplePsr11ServiceLocator.php
3、PimpleServiceIterator.php
实现 PSR-11 的容器类
final class Container implements ContainerInterface { private $pimple; public function __construct(PimpleContainer $pimple) { $this->pimple = $pimple; } public function get($id) { return $this->pimple[$id]; } public function has($id) { return isset($this->pimple[$id]); } }
源码很简单,主要是传入 pimple 变量,然后设置 get、has 这个两个方法。
PimplePsr11ServiceLocator.php服务定位
1、在获取依赖 service 的时候,传入有限个 service,而不是全部
2、可以为 service 设置别名
服务迭代,实现了 Iterator 接口,可以循环 service 。
总结Pimple 的确是一个简单的依赖注入容器,代码很容易看懂,对于学习入门来说很好,比 Laravel 的 DI 好懂多了。
原创文章,欢迎转载。转载请注明出处,谢谢。
原文链接地址:http://dryyun.com/2018/04/19/...
作者: dryyun
发表日期: 2018-04-19 16:03:02
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28646.html
摘要:也就是闲时为了写文章而写的一篇关于源码的阅读笔记。是标准库的缩写,一组旨在解决标准问题的接口和类的集合。提供了一套标准的数据结构,一组遍历对象的迭代器,一组接口,一组标准的异常,一系列用于处理文件的类,提供了一组函数,具体可以查看文档。 也就是闲时为了写文章而写的一篇关于 Pimple 源码的阅读笔记。Pimple 代码有两种编码方式,一种是以 PHP 编写的,另一种是以 C 扩展编写...
摘要:已经有了非常好的的相关解析,建议先看下一个简单的依赖注入容器读源码笔记上读源码笔记下这里通过例子补充下核心方法的说明相关的类型服务类似单例工厂服务多个实例参数仅仅是保存一些变量保护参数匿名函数都会被认为服务,但是如果仅仅是想作为一个 已经有了非常好的Pimple的相关解析,建议先看下:Pimple - 一个简单的 PHP 依赖注入容器读 PHP - Pimple 源码笔记(上)读 PH...
摘要:服务通过匿名函数定义,返回一个对象的实例定义一些服务请注意,匿名函数可以访问当前容器实例,从而允许引用其他服务或参数。如果要为所有调用返回不同的实例,请使用方法包装你的匿名函数。 链接 官网 WebSite GitHub - Pimple 这是 Pimple 3.x 的文档。如果你正在使用 Pimple 1.x ,请查看 Pimple 1.x 文档。阅读 Pimple 1.x ...
摘要:实际上,闭包和匿名函数是伪装成函数的对象。容器流程浅析是社区中比较流行的容器。服务提供者服务提供者是连接容器与具体功能实现类的桥梁。服务提供者需要实现接口所有服务提供者必须实现接口方法。但已经完成了服务提供者的注册工作。 需要具备的知识点 闭包 闭包和匿名函数在PHP5.3.0中引入的。 闭包是指:创建时封装周围状态的函数。即使闭包所处的环境不存在了,闭包中封装的状态依然存在。 理论上...
摘要:安装代码加载并实例化参数存储单例存储非单例存储存储匿名函数获取匿名函数服务提供者文档官网文档 Pimple/Container 安装 composer require pimple/pimple: ^3.0 代码 加载并实例化 require __DIR__ . /vendor/autoload.php; $pc = new PimpleContainer(); 参数存储 $pc[ap...
阅读 3076·2023-04-25 20:43
阅读 1719·2021-09-30 09:54
阅读 1590·2021-09-24 09:47
阅读 2874·2021-09-06 15:02
阅读 3510·2021-02-22 17:09
阅读 1233·2019-08-30 15:53
阅读 1441·2019-08-29 17:04
阅读 1956·2019-08-28 18:22