-
-
Notifications
You must be signed in to change notification settings - Fork 1
Features
github-actions[bot] edited this page Jul 8, 2026
·
1 revision
Раздел с подробным описанием каждой возможности CloudCastle DI: принцип работы, плюсы и минусы, примеры кода, рекомендуемые и антипаттерны использования, а также аналог в каждом из 5 конкурентов (PHP-DI, Symfony, Pimple, Laravel, Nette).
Каждая возможность — на отдельной странице. Легенда сравнения: ✅ полная поддержка ·
| Возможность | Кратко |
|---|---|
| PSR-11 и базовая регистрация |
set() / get() / has() — стандартный контракт |
| Фабрики и singleton | ленивое создание, кэш экземпляра |
Прототипы — make() |
свежий экземпляр на каждый вызов |
| Алиасы | несколько имён для одного сервиса |
bind() — интерфейс → реализация |
привязка абстракции к классу |
freeze() — иммутабельность |
запрет изменений после сборки |
dump() — интроспекция |
список зарегистрированных id |
| Возможность | Кратко |
|---|---|
| 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 |
| Возможность | Кратко |
|---|---|
| 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 с фолбэком на внешний контейнер |
| Возможность | Кратко |
|---|---|
| Object pool | переиспользование экземпляров |
| Профилирование | тайминги get/make/call |
| Smart cache (TTL) | ограничение времени жизни singleton |
Сводная таблица поддержки по всем контейнерам — на странице Сравнение. Чего делать не стоит — Анти-паттерны.
CloudCastle DI · · PHP 8.1+ · PSR-11
GitHub · Packagist · Releases · Discussions · Сравнение
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)
- 🏗️ Архитектура
- ⚡ Быстрый старт
- 📊 Сравнение — 5 аналогов, таблица + победители
- 🧩 Возможности (детально) — каждая фича: принцип, +/−, аналоги
- 🧪 Bootstrap
- 🚀 Compiled container
- 🔗 Contextual binding
- 🤖 Autowiring
- 📄 Конфигурация
- 📖 Справочник конфигурации
- 📂 Сканирование классов
- 🌍 Глобальный реестр
- 🏷️ Теги и декораторы
- 🔗 call(), bind(), hooks
- 🔄 Прототипы, alias, lazy, lazyGhost
- 📋 Справочник API
- 🏭 Фабрики и singleton