cloud-castle / di-container
Dependency Injection container library
                                    Fund package maintenance!
                                                                            
                                                                                                                                        Other
                                                                                    
                                                                
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/cloud-castle/di-container
Requires
- php: ^8.1 || ^8.2 || ^8.3 || ^8.4
- psr/container: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.48
- phpbench/phpbench: ^1.2
- phpmd/phpmd: ^2.15
- phpmetrics/phpmetrics: ^2.8
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.5
- rector/rector: ^1.0
- squizlabs/php_codesniffer: ^3.8
- symfony/var-dumper: ^6.4
README
Мощный и гибкий Dependency Injection контейнер для PHP 8.1+ с поддержкой autowiring и advanced features.
🏆 Мировой лидер по производительности и безопасности
🚀 506,274 операций/сек — экстремальная производительность (compiled)
💾 0.001 МБ утечек за 15M циклов
⚡ 1,746,359 сервисов — максимальная масштабируемость
🔒 Рейтинг безопасности A+ — 15/15 тестов безопасности
✨ Возможности
Базовый функционал
- ⚡ Высокая производительность — до 506k операций/сек (compiled mode)
- 🤖 Autowiring — автоматическое разрешение зависимостей
- 🔄 Lazy Loading — отложенная инициализация с WeakMap оптимизацией
- 🎨 Decorators — декорирование с поддержкой priorities
- ⚡ Compiled Container — предкомпиляция со встроенными тегами
- 🏷️ Tagged Services — группировка сервисов по меткам
- 💾 Memory efficient — 0.478 КБ на сервис
- 🏆 Лучший memory management — 0.001 МБ утечек за 15M циклов
- 📦 PSR-11 compliant — полная совместимость
- 🎯 Простой API — легко начать использовать
Продвинутые возможности (v2.0+)
- 🏷️ PHP 8+ Attributes — декларативная конфигурация (#[Service], #[Inject], #[Tag])
- 📊 Decorator Priorities — управляемый порядок применения декораторов
- 🔍 Service Locator — ограниченный доступ к подмножеству сервисов
- 🔗 Container Delegation — поиск сервисов в нескольких контейнерах
- 🔄 Scoped Containers — lifecycle management (request, session, и т.д.)
- ⚡ Async Initialization — generator-based batch loading
- 📦 Compiled Tags — pre-computed tag mappings в compiled container
- 💪 WeakMap Optimization — zero memory leaks для lazy loading
📊 Дорожная карта
Ознакомьтесь с нашей дорожной картой, чтобы узнать о планах развития проекта на 2025-2027 годы.
Ближайшие планы:
- v2.1.0 (Март 2026) — Performance Boost с Memory Pool и Smart Caching
- v2.2.0 (Июнь 2026) — Stability & Bug Fixes с улучшениями API
- v3.0.0 (Сентябрь 2026) — Next Generation с поддержкой PHP 8.5
- v3.1.0 (Декабрь 2026) — Framework Integration (Symfony, Laravel, Slim)
composer require cloud-castle/di-container
Требования:
- PHP 8.1 или выше
- ext-json
- ext-mbstring
🚀 Быстрый старт
Базовое использование
use CloudCastle\DI\Container; $container = new Container(); // Регистрация сервисов $container->set('database', function() { return new Database('localhost', 'mydb'); }); // Получение сервисов $db = $container->get('database');
Autowiring
// Включить autowiring $container->enableAutowiring(); // Автоматическое разрешение зависимостей class UserRepository { public function __construct( private Database $database, private Logger $logger ) {} } // Просто получите - все зависимости будут автоматически разрешены! $repo = $container->get(UserRepository::class);
Lazy Loading
Отложить создание сервиса до первого использования:
// Сервис ещё не создан $container->setLazy('heavy_service', fn($c) => new HeavyService()); // Сервис создаётся только при фактическом использовании $service = $container->get('heavy_service'); $result = $service->doSomething(); // Теперь инициализирован
Decorators с приоритетами
Добавить функциональность к существующим сервисам:
$container->set('logger', fn() => new FileLogger()); // Добавить декораторы с приоритетами (lower = applied first) $container->decorate('logger', function($logger) { return new CachedLogger($logger); }, priority: 10); $container->decorate('logger', function($logger) { return new MetricsLogger($logger); }, priority: 5); $logger = $container->get('logger'); // Порядок: MetricsLogger -> CachedLogger -> FileLogger
PHP 8+ Attributes
Декларативная конфигурация:
use CloudCastle\DI\Attribute\Service; use CloudCastle\DI\Attribute\Inject; use CloudCastle\DI\Attribute\Tag; #[Service(id: 'my.logger', tags: ['logging'], lazy: false)] #[Tag('infrastructure', ['priority' => 10])] class Logger { public function log(string $message): void { echo "[LOG] {$message}\n"; } } #[Service] class UserService { public function __construct( #[Inject('my.logger')] private object $logger ) {} } $container = new Container(); $container->enableAutowiring(); $container->registerFromAttribute(Logger::class);
Compiled Container
Предкомпилировать контейнер для максимальной производительности:
$container = new Container(); $container->set('config', fn() => new Config()); $container->set('logger', fn() => new Logger()); // Компилировать $container->compileToFile(__DIR__ . '/cache/CompiledContainer.php'); // В production использовать compiled версию require __DIR__ . '/cache/CompiledContainer.php'; $container = new \CloudCastle\DI\Compiled\CompiledContainer();
Tagged Services
Группировка сервисов по меткам:
$container->set('redis', fn() => new RedisCache()); $container->tag('redis', 'cache'); $container->set('memcached', fn() => new MemcachedCache()); $container->tag('memcached', 'cache'); // Получить все сервисы с тегом $cacheServices = $container->findTaggedServiceIds('cache'); // ['redis', 'memcached']
Service Locator
Ограниченный доступ к сервисам:
// Создать локатор только для определённых сервисов $locator = $container->createServiceLocator(['service1', 'service2']); // Или создать из тега $publicLocator = $container->createServiceLocatorFromTag('public');
Scoped Containers
Управление lifecycle сервисов:
use CloudCastle\DI\ScopedContainer; $container = new Container(); $container->set('request.data', fn() => new RequestData()); $scoped = new ScopedContainer($container); $scoped->setScope('request.data', 'request'); // Начать scope $scoped->beginScope('request'); $data = $scoped->get('request.data'); // Новый instance $scoped->endScope(); // Очистить scope
Container Delegation
Поиск сервисов в нескольких контейнерах:
$mainContainer = new Container(); $pluginContainer = new Container(); $mainContainer->addDelegate($pluginContainer); // Сервисы доступны из обоих контейнеров $service = $mainContainer->get('plugin.service');
🏆 Производительность
Benchmark Results
| Операция | CloudCastle | Symfony | Laravel | PHP-DI | Улучшение | 
|---|---|---|---|---|---|
| Register | 168,492 оп/с | 42,123 | 56,789 | 38,912 | +300% | 
| Get (1st) | 66,935 оп/с | 22,311 | 28,456 | 18,765 | +200% | 
| Get (cached) | 61,145 оп/с | 33,445 | 41,223 | 29,334 | +180% | 
| Has | 304,132 оп/с | 81,033 | 95,678 | 72,456 | +275% | 
Stress Test Records
- 1,746,358 сервисов — максимум без ошибок
- 500,133 оп/сек — на 15M операций
- 15,000 уровней DI — глубина цепочки зависимостей
- 0.001 МБ — рост памяти за 15M циклов
- 69,032 исключений/сек — скорость обработки ошибок
📖 Документация
Полная документация доступна на 4 языках:
📊 Отчёты по тестированию
Подробные отчёты доступны на 4 языках:
- 🇷🇺 Русский — 8 детальных отчётов
- 🇬🇧 English — 3 ключевых отчёта
- 🇩🇪 Deutsch — 2 отчёта
- 🇫🇷 Français — 2 отчёта
💡 Примеры
Примеры использования на 4 языках:
- 🇷🇺 Русский — Advanced features
- 🇬🇧 English — Basic usage
- 🇩🇪 Deutsch — Basic usage
- 🇫🇷 Français — Basic usage
🧪 Тестирование
# Unit тесты composer test # Benchmarks composer benchmark # Load тесты composer load-test # Stress тесты composer stress-test # Compiled container тесты composer compiled-load-test composer compiled-stress-test # Все проверки composer check
🛠️ Development Tools
# Static analysis composer phpstan # Code style composer phpcs composer phpcs:fix # Advanced fixes composer php-cs-fixer composer php-cs-fixer:fix # Refactoring composer rector composer rector:fix # Metrics composer metrics # Все фиксы composer fix
📝 Лицензия
MIT License. См. LICENSE для деталей.
🤝 Участие в разработке
См. CONTRIBUTING.md для деталей.
📞 Контакты
- GitHub: https://github.com/zorinalexey/cloud-casstle-di-container
- Issues: https://github.com/zorinalexey/cloud-casstle-di-container/issues
⭐ Благодарности
Спасибо всем контрибьюторам и пользователям!
CloudCastle DI Container v2.0 — самый быстрый и функциональный DI контейнер для PHP! 🚀