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

Атрибут AsAlias

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

Синтаксис

#[AsAlias(id, public: false)]

Пример

Давайте создадим сервис и повесим на его класс атрибут AsAlias с псевдонимом 'my_alias':

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

Теперь сервис доступен в контейнере по имени ArticleService и по псевдониму my_alias. Получим его в контроллере:

<?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()); } } ?>

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

hello

Пример

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

<?php namespace AppService; use SymfonyComponentDependencyInjectionAttributeAsAlias; #[AsAlias('my_alias', public: true)] class ArticleService { public function getText(): string { return 'abcde'; } } ?>

Теперь получим сервис из контейнера по псевдониму:

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

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

abcde

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

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