Skip to content

Feature Dump

github-actions[bot] edited this page Jul 8, 2026 · 1 revision

🔍 dump() — интроспекция

← Возможности · Главная · Сравнение

dump() и getDefinitionIds() дают заглянуть внутрь контейнера: какие id зарегистрированы, что настроено. Полезно для отладки и диагностики.

Принцип работы

getDefinitionIds() возвращает список всех зарегистрированных идентификаторов (явные set, autowired, алиасы). dump() отдаёт структурированный снимок состояния: определения, режимы autowiring, теги, алиасы — без создания экземпляров.

$c->set(Db::class, fn () => new Db());
$c->alias('db', Db::class);
$c->tag(Db::class, 'infrastructure');

$c->getDefinitionIds();   // ['CloudCastle\...\Db', 'db', …]
$c->hasDefinition('db');  // true

print_r($c->dump());      // снимок: definitions / aliases / tags / autowiring-режимы

Плюсы

  • Диагностика без побочных эффектов — интроспекция не инстанцирует сервисы.
  • Помогает найти опечатки в id и «мёртвые» регистрации.
  • Основа для инструментов (список сервисов, генерация документации).

Минусы

  • dump() — снимок конфигурации, а не рантайм-графа объектов (созданные экземпляры не показывает целиком).
  • Не заменяет профилирование для анализа производительности (см. Профилирование).

✅ Рекомендуется

  • Использовать в dev-командах/эндпоинтах диагностики для проверки состава контейнера.
  • В тестах — ассертить наличие ключевых id через hasDefinition() / getDefinitionIds().

❌ Антипаттерны

  • Логировать полный dump() в проде: может содержать чувствительные id/конфиг — маскируйте и не пишите в общие логи.
  • Строить бизнес-логику на основе dump() — это диагностический инструмент, а не публичный контракт данных.

Аналоги в других контейнерах

Контейнер Аналог
PHP-DI getKnownEntryNames() (⚠️ ограниченно)
Symfony debug:container (консоль) — богатая интроспекция
Laravel getBindings() (⚠️)
Pimple keys() (только ключи) / нет полноценного dump (❌)
Nette интроспекция скомпилированного контейнера (✅)

CloudCastle, Symfony, Nette — структурированная интроспекция.

См. также: freeze() · Профилирование.

Clone this wiki locally