Skip to content

Features

github-actions[bot] edited this page Jul 8, 2026 · 1 revision

CloudCastle DI

🧩 Возможности — детальный разбор

← Главная · Сравнение с аналогами · Быстрый старт

Раздел с подробным описанием каждой возможности CloudCastle DI: принцип работы, плюсы и минусы, примеры кода, рекомендуемые и антипаттерны использования, а также аналог в каждом из 5 конкурентов (PHP-DI, Symfony, Pimple, Laravel, Nette).

Каждая возможность — на отдельной странице. Легенда сравнения: ✅ полная поддержка · ⚠️ частично · 🔌 через адаптер · ❌ нет.

📦 Регистрация и жизненный цикл

Возможность Кратко
PSR-11 и базовая регистрация set() / get() / has() — стандартный контракт
Фабрики и singleton ленивое создание, кэш экземпляра
Прототипы — make() свежий экземпляр на каждый вызов
Алиасы несколько имён для одного сервиса
bind() — интерфейс → реализация привязка абстракции к классу
freeze() — иммутабельность запрет изменений после сборки
dump() — интроспекция список зарегистрированных id

🤖 Autowiring

Возможность Кратко
Constructor autowiring авто-разрешение зависимостей конструктора
Property и method injection инъекция в свойства и сеттеры
Attribute autowiring #[Inject] и свои атрибуты
Service closures инъекция Closure(): Service через #[AutowireServiceClosure]
Генерируемые фабрики-интерфейсы реализация фабрики по интерфейсу (auto-factory)
Union / nullable / intersection типы разрешение сложных типов
Autoconfigure / _instanceof авто-тег реализаций интерфейса
Детекция циклов защита от бесконечной рекурсии (Laravel — DoS)

📄 Конфигурация и сканирование

Возможность Кратко
Декларативная конфигурация PHP / JSON / YAML / XML + каталог
Сканирование каталога авто-регистрация классов по regex
Авто-регистрация #[AsService] теги и alias'ы class-level attribute'ом
Compiled container предсобранный контейнер для prod

🧰 Расширенный API

Возможность Кратко
Contextual binding разные реализации для разных потребителей
Теги и tagged services группы сервисов + iterator/locator
Service subscribers подписка на сервисы + scoped-локатор
Декораторы обёртки вокруг сервиса
Lazy service отложенное создание через прокси-обёртку
Lazy ghost proxy Symfony-style ghost без загрузки реализации
Scoped-сервисы singleton в пределах scope
Reset stateful сброс состояния между запросами (long-running)
call() — вызов с autowire вызов любого callable с инъекцией
Хуки резолвинга (before/after) до и после создания сервиса
Расширения и compiler passes подключение пакетов + сквозная сборка графа
Глобальный реестр доступ к контейнеру приложения
Композит/делегирующий контейнер цепочка PSR-11 с фолбэком на внешний контейнер

📈 Наблюдаемость и оптимизации (opt-in)

Возможность Кратко
Object pool переиспользование экземпляров
Профилирование тайминги get/make/call
Smart cache (TTL) ограничение времени жизни singleton

Сводная таблица поддержки по всем контейнерам — на странице Сравнение. Чего делать не стоит — Анти-паттерны.

Clone this wiki locally