Wirebox

Легковесный DI-контейнер для PHP 8.4 с автовайрингом, атрибутами и компилируемым контейнером.

CI codecov PHPStan Level 9 Latest Stable Version PHP Version License

Быстрый старт English


Что такое Wirebox?

Wirebox — это современный контейнер внедрения зависимостей (DI-контейнер) для PHP 8.4+, не требующий конфигурации. Он использует новейшие возможности PHP — нативные атрибуты, ленивые объекты и рефлексию — для удобной и мощной работы с зависимостями.

Ключевые особенности

  • Нулевая конфигурация — укажите директорию, все конкретные классы зарегистрируются автоматически
  • PSR-11 совместимость — стандартная реализация ContainerInterface
  • PHP 8.4 атрибуты — декларативная настройка сервисов: #[Singleton], #[Inject], #[Lazy] и другие
  • Автовайринг — автоматическое разрешение зависимостей конструктора по type hints
  • Компилируемый контейнер — генерация PHP-класса без рефлексии для продакшена
  • Ленивые прокси — отложенное создание через нативные lazy objects PHP 8.4
  • Встроенный dotenv — поддержка .env без внешних зависимостей
  • Автоконфигурация — автоматическая маркировка тегами по интерфейсу или атрибуту (в стиле Symfony)

Быстрый пример

use AsceticSoft\Wirebox\ContainerBuilder;

$builder = new ContainerBuilder(projectDir: __DIR__);
$builder->scan(__DIR__ . '/src');
$container = $builder->build();

$service = $container->get(App\UserService::class);

Три строки — и DI-контейнер с автовайрингом готов. Никакого XML, YAML или шаблонного кода.


Почему Wirebox?

Возможность Wirebox Другие контейнеры
Нативные lazy objects PHP 8.4 Да Генерация прокси
Сканирование без конфигурации Да Ручная регистрация
Встроенная поддержка .env Да Внешние пакеты
Компилируемый контейнер Да Не все
Автоконфигурация Да Не все
Минимум зависимостей Только psr/container Часто много
PHPStan Level 9 Да По-разному

Требования

  • PHP >= 8.4
  • psr/container ^2.0

Установка

composer require ascetic-soft/wirebox

Документация

Быстрый старт

Установка, первый контейнер и базовое использование за 5 минут.

Конфигурация

Сканирование директорий, привязки, фабрики и fluent API.

Атрибуты

Все PHP-атрибуты: Singleton, Transient, Inject, Param, Tag и другие.

Переменные окружения

Встроенный dotenv, 3-уровневый приоритет, приведение типов.

Компилируемый контейнер

Генерация контейнера без рефлексии для продакшена.

Продвинутые возможности

Автоконфигурация, теги, ленивые прокси, циклические зависимости.

Справочник API

Полный справочник по всем публичным классам и методам.