-
-
Notifications
You must be signed in to change notification settings - Fork 1
FAQ
CloudCastle DI — компактный PSR-11 контейнер с явным set(), singleton-фабриками, reflection autowiring (конструктор, свойства, методы; типы, union, intersection, PHP attributes, autowiring по имени), scan каталогов, tagged services и декораторами. Одна runtime-зависимость (psr/container). Без YAML и compiled container.
Да. Включите глобально:
$container->enableAutowiring();
$service = $container->get(App\Service\MyService::class);Или точечно: $container->autowire(App\Service\MyService::class).
Подробнее — Autowiring.
Да. При autowiring id — полное имя класса. Можно также использовать произвольные строки ('logger', 'mailer') через set().
$container->scan(__DIR__ . '/Services', 'App\\Services\\');См. Сканирование классов.
Да — ContainerRegistry::set() / get(). Рекомендуется инициализировать в bootstrap; в тестах вызывайте ContainerRegistry::reset(). См. Глобальный реестр.
Да: tag() / getTagged() и decorate(). См. Теги и декораторы.
Да. CloudCastle\DI\Attribute\Inject и Autowire на параметрах конструктора, свойствах, методах и параметрах методов:
#[Inject('app.clock')]
private ClockInterface $clock;
#[Inject]
protected function setClock(ClockInterface $clock): void {}Подробнее — Autowiring.
Да.
-
enablePropertyAutowiring()— typed properties без attribute (после конструктора) -
enableMethodAutowiring()— public/protected setter и inject-методы с параметрами - Attributes
#[Inject]/#[Autowire]на свойствах и методах работают без этих флагов
Порядок: конструктор → свойства → методы. См. Autowiring.
Да. Параметры вида Iterator&Countable разрешаются, если экземпляр из контейнера удовлетворяет всем типам intersection.
Да, опционально: enableParameterNameAutowiring(). Параметр $logger получит сервис с id 'logger', если он зарегистрирован. По умолчанию выключено.
При autowiring — да (ContainerException). В фабриках set() — нет, возможен бесконечный цикл.
Container не синхронизирован. В PHP-FPM один контейнер на запрос — типичный сценарий. В long-running workers при параллельном доступе нужна внешняя синхронизация или контейнер на worker.
В upstream настроен workflow Packagist с secret PACKAGIST_TOKEN. Для форка настройте свой токен в Settings → Secrets.
composer docsРезультат в docs/ (генерируется локально). Руководство — doc/guide/ и эта Wiki.
- Discussions Q&A
- Issues — баги
- SECURITY — уязвимости