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

Класс ParameterBag

Класс ParameterBag представляет собой контейнер для хранения параметров в виде пар ключ-значение. Он используется внутри объектов Request для работы с параметрами запроса, атрибутами и серверными переменными. Класс предоставляет удобные методы для безопасного извлечения данных: get, all, has, set, remove и типизированные методы getInt, getBoolean, getString.

Объект создаётся с массивом параметров, который можно изменять в процессе работы. Класс реализует интерфейсы IteratorAggregate и Countable, что позволяет перебирать параметры в цикле и получать их количество.

Синтаксис

<?php use Symfony\Component\HttpFoundation\ParameterBag; $bag = new ParameterBag(['key' => 'value']); ?>

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BagController extends AbstractController { #[Route('/bag', name: 'bag_index')] public function index(): Response { $bag = new ParameterBag(['name' => 'abcde', 'age' => 25]); return new Response($bag->get('name')); } } ?>

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

abcde

Пример

Давайте получим все параметры сразу с помощью метода all:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BagController extends AbstractController { #[Route('/bag-all', name: 'bag_all')] public function all(): Response { $bag = new ParameterBag(['name' => 'abcde', 'age' => 25]); $res = $bag->all(); return new Response(json_encode($res)); } } ?>

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

{"name":"abcde","age":25}

Пример

Давайте проверим наличие параметра с помощью метода has:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BagController extends AbstractController { #[Route('/bag-has', name: 'bag_has')] public function has(): Response { $bag = new ParameterBag(['name' => 'abcde']); $res = $bag->has('name'); return new Response($res ? 'true' : 'false'); } } ?>

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

true

Пример

Давайте установим новый параметр через метод set и удалим существующий через remove:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BagController extends AbstractController { #[Route('/bag-modify', name: 'bag_modify')] public function modify(): Response { $bag = new ParameterBag(['name' => 'abcde', 'age' => 25]); $bag->set('city', 'hello'); $bag->remove('age'); $res = $bag->all(); return new Response(json_encode($res)); } } ?>

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

{"name":"abcde","city":"hello"}

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\ParameterBag; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class BagController extends AbstractController { #[Route('/bag-typed', name: 'bag_typed')] public function typed(): Response { $bag = new ParameterBag(['age' => '25', 'active' => '1']); $age = $bag->getInt('age'); $active = $bag->getBoolean('active'); return new Response($age . ' ' . ($active ? 'true' : 'false')); } } ?>

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

25 true

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

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