РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
739 of 1361 menu

Атрибут Autoconfigure

Атрибут Autoconfigure вешается на класс сервиса и включает для него режим автоматической конфигурации. Это позволяет Symfony автоматически добавлять теги и применять настройки, основываясь на интерфейсах, которые реализует класс, или на его родительских классах. Атрибут принимает один необязательный параметр value, который может быть булевым значением (по умолчанию true) для включения или отключения автоконфигурации.

Синтаксис

#[Autoconfigure(value: bool)]

Пример

Давайте создадим сервис, который реализует интерфейс EventSubscriberInterface, и включим для него автоконфигурацию. Symfony автоматически пометит его тегом kernel.event_subscriber:

<?php namespace AppEventSubscriber; use SymfonyComponentEventDispatcherEventSubscriberInterface; use SymfonyComponentHttpKernelEventRequestEvent; use SymfonyComponentHttpKernelEventResponseEvent; use SymfonyComponentDependencyInjectionAttributeAutoconfigure; #[Autoconfigure] class ArticleSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ RequestEvent::class => 'onRequest', ResponseEvent::class => 'onResponse', ]; } public function onRequest(RequestEvent $event): void { // ... } public function onResponse(ResponseEvent $event): void { // ... } } ?>

Теперь Symfony автоматически зарегистрирует этот класс как подписчик на события без необходимости вручную указывать тег в конфигурации.

Пример

Давайте создадим сервис, который реализует интерфейс CommandInterface, и включим для него автоконфигурацию. Symfony автоматически пометит его тегом console.command:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentDependencyInjectionAttributeAutoconfigure; #[Autoconfigure] class ArticleCommand extends Command { protected static $defaultName = 'app:article'; protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('hello'); return Command::SUCCESS; } } ?>

Результат выполнения команды php bin/console app:article:

hello

Пример

Давайте отключим автоконфигурацию для конкретного сервиса, передав в атрибут значение false:

<?php namespace AppService; use SymfonyComponentDependencyInjectionAttributeAutoconfigure; #[Autoconfigure(false)] class ArticleService { public function getText(): string { return 'hello'; } } ?>

В этом случае сервис не будет автоматически конфигурироваться, даже если он реализует интерфейсы, которые обычно добавляют теги.

Смотрите также

  • атрибут AutoconfigureTag,
    который автоматически добавляет тег сервису
  • атрибут Autowire,
    который включает автоматическое внедрение зависимостей
  • класс Container,
    который управляет сервисами в контейнере
  • атрибут AsAlias,
    который задаёт псевдоним для сервиса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить