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.
Informations about the package di-container
DiContainer
Kaspi/di-container — это легковесный контейнер внедрения зависимостей для PHP >= 8.0.
Установка
Особенности
- Autowire - контейнер автоматически создаёт и внедряет зависимости.
- Поддержка "zero configuration for dependency injection" - когда ненужно объявлять зависимость в определениях контейнера. Если класс не имеет зависимостей или зависит только от других конкретных классов, контейнеру не нужно указывать, как разрешить этот класс.
- Поддержка Php-атрибутов для конфигурирования сервисов в контейнере.
- Поддержка тегов (tags) для определений и сервисов в контейнере.
Быстрый старт
Определения классов:
[!NOTE] Контейнер "пытается" самостоятельно определить запрашиваемую зависимость - является ли это классом или callable типом.
DiContainer
выполнит следующие действия для App\Controllers\PostController
:
[!TIP] Реализация кода в примере
Другой вариант для примера выше можно использовать для получения результата DiContainer::call()
:
[!TIP] Больше информации о DiContainer::call()
[!NOTE] Примеры использования пакета kaspi/di-container в репозитории
Конфигурирование DiContainer
Для конфигурирования контейнера используется класс
Kaspi\DiContainer\DiContainerConfig::class
который имплементируют интерфейс
Kaspi\DiContainer\Interfaces\DiContainerConfigInterface
Или использовать фабрику с настроенными по умолчанию параметрами:
[!TIP] При попытке разрешить зависимость через метод
get
или аргумент конструктора, или метода:
$container->get(Psr\Container\ContainerInterface::class);
$container->get(Kaspi\DiContainer\DiContainer::class);
$container->get(Kaspi\DiContainer\Interfaces\DiContainerInterface::class);
будет получен текущий class
Kaspi\DiContainer\DiContainer::class
📁 DefinitionsLoader
Загрузка конфигурации для контейнера зависимостей из нескольких файлов. Подробное описание использования DefinitionsLoader.
🧰 Подробное описание конфигурирования и использования
- 🐘 DiContainer с конфигурированием в стиле php определений.
-
️⃣ DiContainer c конфигурированием через PHP атрибуты.
- 📦 DiContainer::call() для вызова чистых
callable
типов и дополнительных определений. - 🔖 Тэгирование определений и сервисов.
Тесты
Прогнать тесты без подсчёта покрытия кода
Запуск тестов с проверкой покрытия кода тестами
Статический анализ кода
Для статического анализа используем пакет PHPStan.
Code style
Для приведения кода к стандартам используем php-cs-fixer который объявлен в dev зависимости composer-а
Использование Docker образа с PHP 8.0, 8.1, 8.2, 8.3, 8.4
Указать образ с версией PHP можно в файле .env
в ключе PHP_IMAGE
.
По умолчанию контейнер собирается с образом php:8.0-cli-alpine
.
Собрать контейнер
Установить зависимости php composer-а:
🔔 Если установлен make
в системе:
Тесты
Запуск тестов без отчёта о покрытии кода:
🔔 Если установлен make
в системе:
Прогнать тесты с отчётом о покрытии кода:
🔔 Если установлен make
в системе:
⛑ pезультаты будут в папке
.coverage-html
Статический анализ кода PHPStan
если установлен make
в системе:
Запуск комплексной проверки
Если установлен make
– запуск проверки code-style, stat analyzer, tests:
Другое
Можно работать в shell оболочке в docker контейнере:
All versions of di-container with dependencies
psr/container Version ^2.0
ext-tokenizer Version *