读 PHP - Pimple 源码笔记(下)

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

PSR-11 服务容器接口

PSR

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

PSR-11

PSR-11 是服务容器接口 。github

interface ContainerInterface
{
     public function get($id);
     public function has($id);
}

只须要实现这个两个接口就行。学习

Pimple - PSR-11 兼容性

Pimple 的做者本身也说了,因为历史缘由,没有实现 PSR-11,可是提供了辅助类 。
一、PimplePsr11Container.php
二、PimplePsr11ServiceLocator.php
三、PimpleServiceIterator.phpthis

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 这个两个方法。code

PimplePsr11ServiceLocator.php

服务定位
一、在获取依赖 service 的时候,传入有限个 service,而不是所有
二、能够为 service 设置别名接口

PimpleServiceIterator.php

服务迭代,实现了 Iterator 接口,能够循环 service 。开发

总结

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

原创文章,欢迎转载。转载请注明出处,谢谢。
原文连接地址: http://dryyun.com/2018/04/19/...
做者: dryyun 发表日期: 2018-04-19 16:03:02
相关文章
相关标签/搜索