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

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

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

Синтаксис

public function get(string $id, int $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE): ?object

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $container = $this->container; $mailer = $container->get('mailer'); return new Response(get_class($mailer)); } } ?>

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

"Symfony\Component\Mailer\Mailer"

Пример

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

<?php namespace App\Controller; use App\Service\ArticleService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $container = $this->container; $service = $container->get(ArticleService::class); return new Response($service->getTitle()); } } ?>

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

"article"

Пример

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

<?php namespace App\Command; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\DependencyInjection\ContainerInterface; #[AsCommand(name: 'app:article')] class ArticleCommand extends Command { public function __construct( private ContainerInterface $container ) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { $service = $this->container->get('user.service'); $output->writeln($service::class); return Command::SUCCESS; } } ?>

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

"App\Service\UserService"

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

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