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

Атрибут Autowire

Атрибут Autowire вешается на метод или свойство класса и указывает контейнеру зависимостей Symfony, что в это место нужно внедрить сервис. Первым параметром передаётся идентификатор сервиса (обычно это имя класса или интерфейса). Если параметр не указан, Symfony попытается определить сервис автоматически по типу аргумента. Атрибут позволяет гибко управлять внедрением зависимостей там, где стандартный автовайринг не срабатывает или требуется особая логика.

Синтаксис

#[Autowire(service: 'service_id')]

Пример

Давайте внедрим сервис MailerInterface в метод контроллера с помощью атрибута Autowire:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\MailerInterface; use Symfony\Contracts\Service\Attribute\Autowire; class ArticleController extends AbstractController { #[Autowire(service: 'mailer.mailer')] public function send(MailerInterface $mailer): Response { $mailer->send($email); return new Response('sent'); } } ?>

Результат выполнения кода:

"sent"

Пример

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

<?php namespace App\Service; use Symfony\Component\Mailer\MailerInterface; use Symfony\Contracts\Service\Attribute\Autowire; class ArticleService { #[Autowire] private MailerInterface $mailer; public function send(): string { $this->mailer->send($email); return 'sent'; } } ?>

Результат выполнения кода:

"sent"

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

  • класс Container,
    который управляет сервисами приложения
  • атрибут AutowireIterator,
    который внедряет итератор сервисов
  • атрибут AutowireLocator,
    который внедряет локатор сервисов
  • атрибут Required,
    который помечает обязательные зависимости
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить