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

Класс Container

Класс Container представляет собой контейнер внедрения зависимостей (DI-контейнер) в Symfony. Он хранит определения сервисов и отвечает за их создание, хранение и выдачу. Первым параметром конструктор принимает массив параметров, вторым - массив определений сервисов. Доступ к сервисам осуществляется через методы get и has.

Синтаксис

new Container(array $parameters = [], array $services = [])

Пример

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

<?php namespace App\Service; use Symfony\Component\DependencyInjection\Container; class ContainerExample { public function demo(): string { $container = new Container(); $container->set('app.name', 'article'); if ($container->has('app.name')) { return $container->get('app.name'); } return 'hello'; } } ?>

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

"article"

Пример

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

<?php namespace App\Service; use Symfony\Component\DependencyInjection\Container; class ContainerCheck { public function check(): bool { $container = new Container(); $container->set('app.name', 'abcde'); return $container->has('app.name'); } } ?>

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

true

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\DependencyInjection\ContainerInterface; class ContainerController extends AbstractController { #[Route('/container', name: 'container_index')] public function index(ContainerInterface $container): Response { $name = $container->getParameter('kernel.environment'); return new Response($name); } } ?>

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

dev

Пример

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

<?php namespace App\Service; use Symfony\Component\DependencyInjection\Container; class ContainerParam { public function getParam(): string { $container = new Container(['app.locale' => 'abcde']); if ($container->hasParameter('app.locale')) { return $container->getParameter('app.locale'); } return 'hello'; } } ?>

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

"abcde"

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

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