讀 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
相關文章
相關標籤/搜索