读 PHP - Pimple 源码笔记(下)

接着上篇 还有一些内容没有写,上篇已经把关于 Pimple 最主要的代码分析了一下,这篇主要是关于 PSR-11 兼容性的分析。

PSR-11 服务容器接口

PSR

PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准 。
有一份 PSR 中文版 推荐看看,不过由于是翻译的,难免不是很及时,但是对于理解 PSR 1 - PSR 7 还是很有帮助的。

PSR-11

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

PimplePsr11Container.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 设置别名

PimpleServiceIterator.php

服务迭代,实现了 Iterator 接口,可以循环 service 。

总结

Pimple 的确是一个简单的依赖注入容器,代码很容易看懂,对于学习入门来说很好,比 Laravel 的 DI 好懂多了。

原创文章,欢迎转载。转载请注明出处,谢谢。
原文链接地址:http://dryyun.com/2018/04/19/...
作者: dryyun
发表日期: 2018-04-19 16:03:02

小码农的打怪
打怪升级中~~
1 篇内容引用
5.4k 声望
176 粉丝
0 条评论
推荐阅读
GVM - Go 的多版本管理工具,使用介绍
原文作者: dryyun原文链接: [链接] 基本介绍 项目地址 Go GitHub GVM GitHub 本机环境 设备 MacBook Pro 系统 macOS High Sierra 10.13.6 多版本管理使用场景 在 Mac 上使用 brew install go 真的很简单,一个命...

dryyun7阅读 10.7k

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.3k评论 4

图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.2k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2k评论 2

封面图
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10k

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go4阅读 944评论 2

封面图
Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
通过javascript监听搜索框的内容,调用后端即可。(1)javascript监听搜索框的内容(2)把搜索框的关键词传给后端进行搜索(3)搜索到结果,遍历到页面

TANKING1阅读 4.3k

5.4k 声望
176 粉丝
宣传栏