Что это такое?
Официальный репозиторий PHP-FIG с интерфейсами для PSR-11 — стандарта Container Interface. Он определяет абстракции, которые описывают компоненты контейнера внедрения зависимостей (Dependency Injection Container).
То есть это настоящий контейнер внедрения зависимостей, через который я могу запустить свой код?
Нет — здесь только PHP-интерфейсы, а не работающий контейнер. Вы зависите от стандарта, а приложение подключает любой контейнер, совместимый с PSR-11, какой ему больше нравится.
Как добавить его в PHP-проект?
Установите пакет через Composer из 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