接着上篇 还有一些内容没有写,上篇已经把关于 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

读 PHP - Pimple 源码笔记(下)相关推荐

  1. 数据结构源码笔记(C语言):置换-选择算法

    //实现置换-选择算法#include<stdio.h> #include<malloc.h> #include<string.h> #include<std ...

  2. redis源码笔记 - 刘浩de技术博客 - 博客园

    redis源码笔记 - 刘浩de技术博客 - 博客园 redis源码笔记 - 刘浩de技术博客 - 博客园 redis源码笔记 记录发现的一个hiredis的bug 摘要: hiredis是redis ...

  3. 《〈XNova/OGame〉源码笔记》(5)

    <〈XNova/OGame〉源码笔记> 作者:赖勇浩(http://blog.csdn.net/lanphaday) 一.      安装 现在去看安装部分,可能显得颇为怪异.其实不然,之 ...

  4. 《〈XNova/OGame〉源码笔记》(1-2)

    <〈XNova/OGame〉源码笔记> 作者:赖勇浩(http://blog.csdn.net/lanphaday) 一.      引言 <OGame>中文名<银河帝国 ...

  5. angularjs源码笔记(3)--injector

    2019独角兽企业重金招聘Python工程师标准>>> 简介 injector是用来做参数自动注入的,例如 function fn ($http, $scope, aService) ...

  6. 数据结构源码笔记(C语言):索引文件建立和查找

    //实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...

  7. 数据结构源码笔记(C语言):栈的基本操作

    #include <stdio.h> #define MaxSize 100typedef char ElemType;typedef struct {char stack[MaxSize ...

  8. 数据结构源码笔记(C语言):基数排序

    //实现基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#define MAXE 20 / ...

  9. 数据结构源码笔记(C语言):哈希表的相关运算算法

    //实现哈希表的相关运算算法 #include<stdio.h> #include<malloc.h> #include<string.h>#define MaxS ...

  10. Dubbo-go 源码笔记(二)客户端调用过程

    作者 | 李志信 导读:有了上一篇文章<Dubbo-go 源码笔记(一)Server 端开启服务过程>的铺垫,可以类比客户端启动于服务端的启动过程.其中最大的区别是服务端通过 zk 注册服 ...

最新文章

  1. Netbackup 添加策略_报NFS.Skipping
  2. PyQt 5布局管理
  3. python核心编程第六章练习6-12
  4. python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法
  5. 东南大学数字信号处理实验_数字与信号处理实验1 离散时间信号分析
  6. 什么是分布式_什么是分布式系统,如何学习分布式系统?
  7. 华为交换机重制_华为交换机重置命令
  8. Maximum Mode
  9. html在文本中加颜色,如何在HTML中更改文本颜色
  10. 人工智能/机器学习/深度学习 经典必看书籍【附百度网盘链接】
  11. android studio umake,Android Studio中NDK开发傻瓜教程(CMake)
  12. github上传本地项目代码
  13. python输出二进制数_Python计算二进制数及输出补码
  14. FaceNet2ExpNet: Regularizing a Deep Face Recognition Net for Expression Recognition论文个人解读
  15. MacBook外接显示器的显示模式介绍及设置说明(分屏/多屏)
  16. 计算机网络和智能家居,华中科技大学计算机网络专题智能家居与普适计算.ppt...
  17. SAP vf11发票冲销
  18. 不要跟穷鬼学着做副业
  19. Java 查找数组中某个数字的下标
  20. python编辑word书签_小伙发现了Python中编写word文档的库,编辑文字方便多了

热门文章

  1. 基于Java Servlet图片服务器
  2. 自己动手搭建一个简单的基于Hadoop的离线分析系统之一——网络爬虫
  3. CVPR 2022 Oral | 视频文本预训练新SOTA,港大、腾讯ARC Lab推出基于多项选择题的借口任务
  4. Computer Viruses and Malware (Advances in Information Security)
  5. 外贸邮箱企业邮箱,免费外贸企业邮箱大全,外贸企业邮箱都有哪些?
  6. 电商后台系统:管理后台之账号管理(一)
  7. 计算机编程情话,程序员的土味情话~(表白代码第二波)
  8. 错误代码1500什么意思_宽带出错出错提示代码是示什么意思
  9. 【独立站运营】什么是营销转化率?如何提升转化率?
  10. 英文版oracle数据库不能复制粘贴,win10 plsql没法复制 粘贴