Download the PHP package kaspi/di-container without Composer
On this page you can find all versions of the php package kaspi/di-container. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download kaspi/di-container
More information about kaspi/di-container
Files in kaspi/di-container
Package di-container
Short Description Dependency injection container with autowired
License MIT
Informations about the package di-container
DiContainer
Kaspi/di-container — это контейнер внедрения зависимостей для PHP >= 8.1 реализующий рекомендацию PSR-11.
Установка
Особенности
- Autowire – контейнер автоматически создаёт и внедряет зависимости.
- Zero configuration – если класс не имеет зависимостей или зависит только от других конкретных классов, контейнеру не нужно указывать, как разрешить этот класс.
- Php-атрибуты для конфигурирования сервисов в контейнере.
- Поддержка тегов (tags) для определений и сервисов в контейнере.
- Компиляция контейнера – генерация настроенного контейнера в PHP-код оптимизированный специально для вашей конфигурации и ваших классов.
Быстрый старт
📂 Определения классов:
👷♂️ Создание контейнера и разрешение зависимостей:
[!NOTE] Контейнер "пытается" самостоятельно определить запрашиваемую зависимость - является ли это классом или callable типом.
DiContainer выполнит следующие действия для App\Controllers\PostController:
[!TIP] Реализация кода в примере
Другой вариант для примера выше можно использовать для получения результата метод контейнера call():
[!TIP] Больше информации о методе
call()[!NOTE] Примеры использования пакета kaspi/di-container в репозитории
Конфигурирование DiContainer
Для конфигурирования контейнера используется класс
\Kaspi\DiContainer\DiContainerConfig
который реализует интерфейс
\Kaspi\DiContainer\Interfaces\DiContainerConfigInterface.
Нулевая конфигурация для внедрения зависимостей:
Не нужно указывать контейнеру, как разрешить конкретный PHP-класс если класс не имеет зависимостей, или зависит только от других конкретных классов, или зависит от ранее сконфигурированных классов (интерфейсов).
Использовать Php-атрибуты для конфигурирования:
Предоставляет возможность конфигурирования определений на базе PHP атрибутов.
Разрешать зависимость как синглтон:
Для определений в контейнере можно указать как разрешать сервис – возвращать всегда одни и тот же объект
или создавать объект сервиса каждый раз при получении через метод контейнера get().
Для определений контейнера у которых неуказан способ получения через метод контейнера get()
применяется значение по умолчанию из конфигурации.
Пример конфигурации:
Особенности получения некоторых классов и интерфейсов.
Некоторые интерфейсы или классы всегда возвращают текущий контейнер зависимостей. При разрешении зависимости для интерфейсов и классов:
Psr\Container\ContainerInterface::classKaspi\DiContainer\Interfaces\DiContainerInterface::classKaspi\DiContainer\DiContainer::class
будет получен текущий контейнер зависимостей.
🧰 Подробное описание конфигурирования и использования
- 👷♂️ Инструмент для сборки контейнера зависимостей DiContainerBuilder.
- 🐘 DiContainer с конфигурированием в стиле php определений.
-
️⃣ DiContainer c конфигурированием через PHP атрибуты.
- 📦 Метод контейнера
call()для вызова чистыхcallableтипов и дополнительных определений. - 🔖 Тэгирование определений и сервисов.
- 📋 Параметры контейнера.
- 🗳️ Внедрение экземпляра класса в рантайм контейнер.
- 🧹 Сброс контейнера зависимостей.
Тесты
Запуск тестов без подсчёта покрытия кода
Запуск тестов с проверкой покрытия кода тестами
Статический анализ кода
Для статического анализа используем пакет PHPStan.
Code style
Для приведения кода к стандартам используем php-cs-fixer который объявлен в dev зависимости composer-а
Использование Docker образа с PHP 8.1, 8.2, 8.3, 8.4, 8.5
Указать образ с версией PHP можно в файле .env в ключе PHP_IMAGE.
По умолчанию контейнер собирается с образом php:8.1-cli-alpine.
Собрать контейнер
Установить зависимости php composer-а:
🔔 Если установлен make в системе:
Тесты
Запуск тестов без отчёта о покрытии кода:
🔔 Если установлен make в системе:
Прогнать тесты с отчётом о покрытии кода:
🔔 Если установлен make в системе:
⛑ pезультаты будут в папке
.coverage-html
Статический анализ кода PHPStan
если установлен make в системе:
Запуск комплексной проверки
Если установлен make – запуск проверки code-style, stat analyzer, tests:
Запуск тестов для всех поддерживаемых версий PHP через Docker образы.
Если установлен make – перед запуском тестов удаляется директория vendor и файл composer.lock, устанавливаются зависимости только потом выполняются тесты:
Другое
Можно работать в shell оболочке в docker контейнере: