-
-
Notifications
You must be signed in to change notification settings - Fork 1
Upgrading
Руководство по переходу между версиями cloudcastle/di.
-
CI:
composer benchmark-checkи шаг регрессии бенчмарков в GitHub Actions -
Infection: MSI ≥95% по всему
src/, включаяConfiguration/ -
XmlConfigurationLoader: в
autowiringтолько явныеtrue-флаги
Код приложения не меняется, если не опираетесь на ключи autowiring.* === false после парсинга XML.
composer update cloudcastle/di-
ContainerConfigurator— конфигурация из PHP / JSON / YAML / XML (опционально) -
registerAttribute()— пользовательские attributes (ServiceIdAttribute)
Существующий bootstrap на чистом PHP API не требует изменений.
composer update cloudcastle/di- YAML: установите
ext-yamlв окружении, если нужны.yaml/.yml - Вызов
configure()— доfreeze()в production
Подробнее — Configuration.
-
freeze()/isFrozen()— блокировка изменений после bootstrap -
getDefinitionIds()— список id без resolve -
dump()— снимок состояния для отладки
См. Wiki: API-reference.
- Исключение в
afterResolving()снимает singleton из кэша — повторныйget()не отдаёт «битый» экземпляр.
Обновление: composer update cloudcastle/di. Код без afterResolving() менять не нужно.
-
call(),bind(),addDefinitions(),afterResolving() -
getTaggedIds(),getTaggedIterator(),getTaggedLocator()
Существующий код с только set() / get() работает без изменений.
composer update cloudcastle/diСм. call(), bind(), afterResolving · Теги и декораторы.
-
bind()вместо парыautowire()+alias()для интерфейсов -
getTaggedIds()когда не нужно создавать все сервисы тега сразу -
afterResolving()для warmup/аудита после первогоget(), не при каждом чтении из кэша
-
make($id)— прототип без singleton-кэша -
alias($alias, $targetId)— альтернативные id -
lazy($serviceId)—LazyServiceс отложеннымget() -
ClassScanner: несколькоclassв файле; парсингenum(без регистрации)
Существующий код с только set() / get() работает без изменений.
composer update cloudcastle/diДобавлены без breaking changes:
-
Autowiring:
enableAutowiring(),disableAutowiring(),autowire(), расширенныйget()/has() -
Attributes:
CloudCastle\DI\Attribute\Inject,Autowire -
Intersection-типы и autowiring по имени:
enableParameterNameAutowiring()(по умолчанию выключен) -
Autowiring свойств и методов:
enablePropertyAutowiring(),enableMethodAutowiring(); attributes на property/method — всегда -
Сканирование:
scan($directory, $namespace?) -
Tagged services и декораторы:
tag(),getTagged(),decorate() -
Глобальный реестр:
ContainerRegistry::set()/get()/has()/reset() - Классы:
Autowirer,MemberResolver,PropertyInjector,MethodInjector,ClassScanner,ParameterTypeResolver,ClassDependencyResolver,IntersectionTypeResolver,AttributeServiceIdReader
Существующий код с только set() / get() работает без изменений.
- Обновите пакет:
composer update cloudcastle/di-
При желании включите autowiring в bootstrap вместо ручного
set()для каждого класса. -
Если используете
ContainerRegistry, вызывайтеContainerRegistry::reset()в PHPUnittearDown. -
Прочитайте Autowiring и Анти-паттерны перед
scan()всегоsrc/.
Изменений в публичном API нет. Wiki, CI и dev-зависимости.
Изменений в публичном API нет. Keywords/description на Packagist.
Major-версия будет описана здесь и в CHANGELOG.
- Прочитайте CHANGELOG для выбранной версии.
- Запустите тесты проекта после
composer update. - Issues · Discussions Q&A
CloudCastle DI · Репозиторий · Packagist · Releases · Discussions · Issues
Исходники Wiki — wiki/ в репозитории (синхронизация через Actions).
- Архитектура
- Быстрый старт
- Сравнение с PHP-DI, Symfony, Pimple — пошагово
- Примеры bootstrap
- Autowiring
- Конфигурация из файлов
- Сканирование классов
- Глобальный реестр
- Теги и декораторы
- call(), bind(), afterResolving
- Прототипы, alias и lazy
- Справочник API
- Фабрики и singleton
- Тестирование
- Тесты безопасности
- Нагрузка и производительность
- Анти-паттерны