Класс InputBag
Класс InputBag представляет собой контейнер
для хранения входных данных запроса, чаще всего
параметров строки запроса (query) или тела запроса
(request). Он доступен через объект Request
и позволяет безопасно извлекать значения нужного
типа. Внутри себя InputBag хранит массив
параметров и предоставляет методы get,
all, has, set,
remove, а также типизированные методы
getInt, getBoolean,
getString и filter.
Синтаксис
use Symfony\Component\HttpFoundation\InputBag;
$bag = new InputBag(['name' => 'abcde']);
$bag->get('name');
Пример
Давайте создадим объект InputBag и получим
из него значение по ключу:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\InputBag;
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 InputBag(['name' => 'abcde']);
$res = $bag->get('name');
return new Response($res);
}
}
?>
Результат выполнения кода:
"abcde"
Пример
Давайте получим все параметры сразу с помощью
метода all:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\InputBag;
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 InputBag([
'a' => 'abcde',
'b' => 'article',
'c' => 'user',
]);
$res = $bag->all();
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"abcde, article, user"
Пример
Давайте проверим наличие параметра методом
has и приведём значение к целому числу
методом getInt:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\InputBag;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class BagController extends AbstractController
{
#[Route('/bag-int', name: 'bag_int')]
public function int(): Response
{
$bag = new InputBag(['page' => '5']);
if ($bag->has('page')) {
$res = $bag->getInt('page');
} else {
$res = 0;
}
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"5"
Пример
Давайте установим новое значение методом
set и удалим параметр методом
remove:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\InputBag;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class BagController extends AbstractController
{
#[Route('/bag-set', name: 'bag_set')]
public function set(): Response
{
$bag = new InputBag(['name' => 'abcde']);
$bag->set('name', 'hello');
$bag->remove('name');
$res = $bag->has('name') ? 'yes' : 'no';
return new Response($res);
}
}
?>
Результат выполнения кода:
"no"
Смотрите также
-
метод
get,
который возвращает значение параметра -
метод
all,
который возвращает все параметры -
метод
has,
который проверяет наличие параметра -
класс
ParameterBag,
который хранит произвольные данные