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

Атрибут Required

Атрибут Required вешается на класс сервиса или на его метод и указывает контейнеру внедрения зависимостей, что данный сервис должен быть создан и доступен. Если сервис помечен этим атрибутом, но не используется нигде в приложении, контейнер не удалит его при компиляции. Параметров у атрибута нет.

Синтаксис

#[Required]

Пример

Давайте пометим класс сервиса атрибутом Required, чтобы контейнер всегда его создавал:

<?php namespace AppService; use SymfonyContractsServiceAttributeRequired; #[Required] class ArticleService { public function getText(): string { return 'article'; } } ?>

Теперь сервис ArticleService будет зарегистрирован в контейнере независимо от того, внедряется он куда-либо или нет.

Пример

Давайте получим помеченный сервис из контейнера и вызовем его метод:

<?php namespace AppController; use AppServiceArticleService; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(ArticleService $service): Response { return new Response($service->getText()); } } ?>

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

"article"

Пример

Давайте пометим атрибутом Required метод сервиса, который должен вызываться контейнером автоматически:

<?php namespace AppService; use SymfonyContractsServiceAttributeRequired; class UserService { private string $name = ''; #[Required] public function setName(string $name): void { $this->name = $name; } public function getName(): string { return $this->name; } } ?>

При создании сервиса контейнер вызовет метод setName и передаст в него значение из параметров контейнера.

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

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