Мощный и гибкий 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 — легко начать использовать
- 🏷️ 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
$container->enableAutowiring();
// Автоматическое разрешение зависимостей
class UserRepository {
public function __construct(
private Database $database,
private Logger $logger
) {}
}
// Просто получите - все зависимости будут автоматически разрешены!
$repo = $container->get(UserRepository::class);Отложить создание сервиса до первого использования:
// Сервис ещё не создан
$container->setLazy('heavy_service', fn($c) => new HeavyService());
// Сервис создаётся только при фактическом использовании
$service = $container->get('heavy_service');
$result = $service->doSomething(); // Теперь инициализированДобавить функциональность к существующим сервисам:
$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Декларативная конфигурация:
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);Предкомпилировать контейнер для максимальной производительности:
$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();Группировка сервисов по меткам:
$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']Ограниченный доступ к сервисам:
// Создать локатор только для определённых сервисов
$locator = $container->createServiceLocator(['service1', 'service2']);
// Или создать из тега
$publicLocator = $container->createServiceLocatorFromTag('public');Управление 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Поиск сервисов в нескольких контейнерах:
$mainContainer = new Container();
$pluginContainer = new Container();
$mainContainer->addDelegate($pluginContainer);
// Сервисы доступны из обоих контейнеров
$service = $mainContainer->get('plugin.service');| Операция | 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% |
- 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# 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 fixMIT 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! 🚀