Команда di
di управляет дисковым кешем DI-сканера — списком классов, которые контейнер
находит при старте. build собирает его перед деплоем, clean удаляет, show
показывает. Аналог mapping, но для контейнера.
Что такое di и зачем
di — команда управления кешем DI-контейнера.
Проблема. Находить классы со scope-атрибутами через сканирование PSR-4 на каждый старт — трата времени в проде. А при отладке хочется видеть, что вообще попало в контейнер.
Решение. di build собирает граф зависимостей в файл, di show показывает
зарегистрированные классы. Об этом и раздел.
Субкоманды
| Субкоманда | Назначение |
|---|---|
build |
Пересобрать кеш: скан + запись, инвалидация OPcache, число классов |
clean |
Удалить кеш ([NOT FOUND], если его нет) |
show [шаблон] |
Показать закешированные FQCN; фильтр по подстроке (без учёта регистра) |
php call di build
php call di clean
php call di show
php call di show Repository # только классы, содержащие "Repository"Поведение
showбез кеша делает живой скан (без записи на диск) и предупреждает об этом.buildинвалидация OPcache, чтобы рантайм подхватил свежий файл.
DEBUG отключает кеш
При DEBUG=true кеш DI не используется — контейнер сканирует на каждый старт, и
новые сервисы видны сразу. Собирайте di build в релизной сборке вместе с
mapping build.
Дальше
- Внедрение зависимостей — что сканирует контейнер
- mapping — парная команда для кеша маршрутов
- Консоль — обзор