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

Метод get класса ServiceLocator

Метод get класса ServiceLocator возвращает сервис из локатора по его идентификатору. Первым параметром передаётся строка с именем сервиса. Если сервис не найден, выбрасывается исключение ServiceNotFoundException.

Синтаксис

public function get(string $id): object

Пример

Давайте получим сервис 'article.repository' из локатора:

<?php namespace AppService; use SymfonyComponentDependencyInjectionServiceLocator; class ArticleService { private ServiceLocator $locator; public function __construct(ServiceLocator $locator) { $this->locator = $locator; } public function findAll(): array { $repository = $this->locator->get('article.repository'); return $repository->findAll(); } } ?>

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

["article 1", "article 2", "article 3"]

Пример

Давайте обработаем ситуацию, когда сервис отсутствует в локаторе:

<?php namespace AppService; use SymfonyComponentDependencyInjectionServiceLocator; use SymfonyComponentDependencyInjectionExceptionServiceNotFoundException; class ArticleService { private ServiceLocator $locator; public function __construct(ServiceLocator $locator) { $this->locator = $locator; } public function find(string $id): string { try { $repository = $this->locator->get('article.repository'); return 'found'; } catch (ServiceNotFoundException $e) { return 'not found'; } } } ?>

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

"found"

Пример

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

<?php namespace AppService; use SymfonyComponentDependencyInjectionServiceLocator; class ArticleService { private ServiceLocator $locator; public function __construct(ServiceLocator $locator) { $this->locator = $locator; } public function process(): array { $res = []; $res[] = $this->locator->get('article.repository')->findAll(); $res[] = $this->locator->get('article.manager')->count(); return $res; } } ?>

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

[["article 1", "article 2"], 2]

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

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