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

Метод resolveValue класса ContainerBag

Метод resolveValue класса ContainerBag разрешает переданное значение и возвращает соответствующий сервис или параметр из контейнера зависимостей. Первым параметром передаётся значение для разрешения: строка с идентификатором сервиса, параметр контейнера или уже готовый объект. Метод удобен внутри сервисов, реализующих ContainerBagInterface, когда нужно получить зависимость по её имени без прямого доступа к контейнеру.

Синтаксис

public function resolveValue(mixed $value): mixed

Пример

Давайте создадим сервис, который реализует ContainerBagInterface и разрешает значение через метод resolveValue:

<?php namespace AppService; use SymfonyComponentDependencyInjectionParameterBagContainerBagInterface; class ArticleResolver { private ContainerBagInterface $bag; public function __construct(ContainerBagInterface $bag) { $this->bag = $bag; } public function resolve(string $id): mixed { return $this->bag->resolveValue($id); } } ?>

Теперь вызовем метод resolve и передадим идентификатор сервиса 'AppServiceArticleService':

<?php namespace AppController; use AppServiceArticleResolver; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(ArticleResolver $resolver): Response { $res = $resolver->resolve('AppServiceArticleService'); return new Response(get_class($res)); } } ?>

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

"AppServiceArticleService"

Пример

Давайте разрешим значение параметра контейнера через resolveValue:

<?php namespace AppService; use SymfonyComponentDependencyInjectionParameterBagContainerBagInterface; class ConfigResolver { private ContainerBagInterface $bag; public function __construct(ContainerBagInterface $bag) { $this->bag = $bag; } public function getParam(string $name): mixed { return $this->bag->resolveValue('%' . $name . '%'); } } ?>

Вызовем метод getParam с именем параметра 'kernel.project_dir':

<?php namespace AppController; use AppServiceConfigResolver; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/config', name: 'article_config')] public function config(ConfigResolver $resolver): Response { $res = $resolver->getParam('kernel.project_dir'); return new Response($res); } } ?>

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

"/var/www/project"

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

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