这是什么?
这是 PHP-FIG 官方的 PSR-11(容器接口标准)接口仓库。它定义了一组抽象接口,用来描述依赖注入容器的各个组成部分。
那这是一个我能拿来运行代码的、真正可用的依赖注入容器吗?
不是——它只提供 PHP 接口,并不是一个能实际运行的容器。你依赖的是这个标准,而你的应用可以自行接入任意一个符合 PSR-11 的容器。
我怎么把它装进一个 PHP 项目?
用 Composer 从 Packagist 添加即可,Packagist 上同时链接了可安装的包以及各个容器实现的列表。
用的时候还需要别的什么东西吗?
只需要 PHP 和 Composer——这个包只有接口,没有任何运行时依赖。要想真正解析服务,你还得另外安装一个具体的 PSR-11 容器实现。
它最帮不上我的忙的地方是什么?
它自己无法创建或获取任何服务——只装这些接口的话,什么都不会发生,除非你再选一个实现了这些接口的真正的容器。
这是给应用开发者用的,还是给类库作者用的?
主要是类库作者:基于这些接口来写代码,类库就不绑定任何特定容器;而最终由应用来选择并配置一个具体的实现。
PSR-11 到底是什么?
PSR-11 是 PHP-FIG 制定的依赖注入容器标准:一套任何容器都可以实现的通用接口。这个仓库保存的就是这些官方接口,这样代码请求服务时就不必关心背后用的是哪个容器。
为什么类库要依赖这个,而不是依赖一个具体的容器?
因为接口能保持供应商中立。基于 PSR-11 写的类库,可以配合应用已经在用的任何符合标准的容器,而不是强迫所有人都用某一个特定的依赖注入实现。
哪些容器真正实现了这些接口?
README 里没有点名任何容器——它只是链接到 Packagist 上的一份实现列表,符合 PSR-11 的容器都收录在那里。
What are similar projects?
log, DesignPatternsPHP, laravel, design-patterns-for-humans, agentmemoryrepo, InversifyJS, toml, agentskills
Which topics is it in?
interface, standard, oop, interoperability, container, dependency-injection, specification, design-patterns, php, library, developer-tools, mit