Wirebox
Легковесный DI-контейнер для PHP 8.4 с автовайрингом, атрибутами и компилируемым контейнером.
Что такое 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
Полный справочник по всем публичным классам и методам.