摘要:服務(wù)容器接口是的簡寫,由組織制定的規(guī)范,是開發(fā)的實踐標(biāo)準(zhǔn)。實現(xiàn)的容器類源碼很簡單,主要是傳入變量,然后設(shè)置這個兩個方法。原創(chuàng)文章,歡迎轉(zhuǎn)載。原文鏈接地址作者發(fā)表日期
接著上篇 還有一些內(nèi)容沒有寫,上篇已經(jīng)把關(guān)于 Pimple 最主要的代碼分析了一下,這篇主要是關(guān)于 PSR-11 兼容性的分析。
PSR-11 服務(wù)容器接口 PSRPSR 是 PHP Standard Recommendations 的簡寫,由 PHP FIG 組織制定的 PHP 規(guī)范,是 PHP 開發(fā)的實踐標(biāo)準(zhǔn) 。
有一份 PSR 中文版 推薦看看,不過由于是翻譯的,難免不是很及時,但是對于理解 PSR 1 - PSR 7 還是很有幫助的。
PSR-11 是服務(wù)容器接口 。
interface ContainerInterface { public function get($id); public function has($id); }
只需要實現(xiàn)這個兩個接口就行。
Pimple - PSR-11 兼容性Pimple 的作者自己也說了,由于歷史原因,沒有實現(xiàn) PSR-11,但是提供了輔助類 。
1、PimplePsr11Container.php
2、PimplePsr11ServiceLocator.php
3、PimpleServiceIterator.php
實現(xiàn) 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 變量,然后設(shè)置 get、has 這個兩個方法。
PimplePsr11ServiceLocator.php服務(wù)定位
1、在獲取依賴 service 的時候,傳入有限個 service,而不是全部
2、可以為 service 設(shè)置別名
服務(wù)迭代,實現(xiàn)了 Iterator 接口,可以循環(huán) service 。
總結(jié)Pimple 的確是一個簡單的依賴注入容器,代碼很容易看懂,對于學(xué)習(xí)入門來說很好,比 Laravel 的 DI 好懂多了。
原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明出處,謝謝。
原文鏈接地址:http://dryyun.com/2018/04/19/...
作者: dryyun
發(fā)表日期: 2018-04-19 16:03:02
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28646.html
摘要:也就是閑時為了寫文章而寫的一篇關(guān)于源碼的閱讀筆記。是標(biāo)準(zhǔn)庫的縮寫,一組旨在解決標(biāo)準(zhǔn)問題的接口和類的集合。提供了一套標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),一組遍歷對象的迭代器,一組接口,一組標(biāo)準(zhǔn)的異常,一系列用于處理文件的類,提供了一組函數(shù),具體可以查看文檔。 也就是閑時為了寫文章而寫的一篇關(guān)于 Pimple 源碼的閱讀筆記。Pimple 代碼有兩種編碼方式,一種是以 PHP 編寫的,另一種是以 C 擴展編寫...
摘要:已經(jīng)有了非常好的的相關(guān)解析,建議先看下一個簡單的依賴注入容器讀源碼筆記上讀源碼筆記下這里通過例子補充下核心方法的說明相關(guān)的類型服務(wù)類似單例工廠服務(wù)多個實例參數(shù)僅僅是保存一些變量保護參數(shù)匿名函數(shù)都會被認(rèn)為服務(wù),但是如果僅僅是想作為一個 已經(jīng)有了非常好的Pimple的相關(guān)解析,建議先看下:Pimple - 一個簡單的 PHP 依賴注入容器讀 PHP - Pimple 源碼筆記(上)讀 PH...
摘要:服務(wù)通過匿名函數(shù)定義,返回一個對象的實例定義一些服務(wù)請注意,匿名函數(shù)可以訪問當(dāng)前容器實例,從而允許引用其他服務(wù)或參數(shù)。如果要為所有調(diào)用返回不同的實例,請使用方法包裝你的匿名函數(shù)。 鏈接 官網(wǎng) WebSite GitHub - Pimple 這是 Pimple 3.x 的文檔。如果你正在使用 Pimple 1.x ,請查看 Pimple 1.x 文檔。閱讀 Pimple 1.x ...
摘要:實際上,閉包和匿名函數(shù)是偽裝成函數(shù)的對象。容器流程淺析是社區(qū)中比較流行的容器。服務(wù)提供者服務(wù)提供者是連接容器與具體功能實現(xiàn)類的橋梁。服務(wù)提供者需要實現(xiàn)接口所有服務(wù)提供者必須實現(xiàn)接口方法。但已經(jīng)完成了服務(wù)提供者的注冊工作。 需要具備的知識點 閉包 閉包和匿名函數(shù)在PHP5.3.0中引入的。 閉包是指:創(chuàng)建時封裝周圍狀態(tài)的函數(shù)。即使閉包所處的環(huán)境不存在了,閉包中封裝的狀態(tài)依然存在。 理論上...
摘要:安裝代碼加載并實例化參數(shù)存儲單例存儲非單例存儲存儲匿名函數(shù)獲取匿名函數(shù)服務(wù)提供者文檔官網(wǎng)文檔 Pimple/Container 安裝 composer require pimple/pimple: ^3.0 代碼 加載并實例化 require __DIR__ . /vendor/autoload.php; $pc = new PimpleContainer(); 參數(shù)存儲 $pc[ap...
閱讀 3214·2023-04-25 20:43
閱讀 1798·2021-09-30 09:54
閱讀 1656·2021-09-24 09:47
閱讀 2970·2021-09-06 15:02
閱讀 3573·2021-02-22 17:09
閱讀 1325·2019-08-30 15:53
閱讀 1514·2019-08-29 17:04
閱讀 2031·2019-08-28 18:22