lavreek / request-receiver
Разложение параметров запроса с использованием Symfony HTTPFoundation.
Requires
- php: >=8.0
- symfony/http-foundation: *
- symfony/validator: *
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-09-19 11:38:42 UTC
README
Работает через Reflection
Легковесное создание распределения параметров запроса в существующие DTO.
Установка
composer require lavreek/request-receiver
Использование
Использование тестировалось только в фреймворке Symfony [6, 7, 8].
Создание Request DTO
Создание объекта передачи данных.
Пример запроса:
{
"token": "eyJ.eyJ.ZDQ"
}
- TestRequest.php:
<?php namespace App\DTO; use LAVREEK\Library\Request\RequestReceive; /** * Запрос параметров необходимых для валидации токена. */ class TestRequest extends RequestReceive { /** @var string Проверяемый токен. */ public string $token; }
- ApiController.php:
<?php final class ApiController extends AbstractController { #[Route('/jwt/validate', name: '_jwt_validate', methods: ['POST'])] public function validate(TestRequest $request): JsonResponse { // $request->token; // Использование доступного свойства класса. // $request->toArray(); // Получение всех параметров объекта в виде массива. } }
В результате данного запроса, параметр запроса token попадёт в ПУБЛИЧНОЕ свойство класса TestRequest -> token.
На текущем этапе разработки
publicявляется обязательным условием использования.
Древовидная структура данных.
Использование древовидной структуры не совсем очевидно для рядового пользователя т.к. оно использует иное распределение.
Request DTO используется для создания Request из глобального состояния.
{
"token": "eyJ.eyJ.ZDQ",
"meta": {
"name": "name",
"address": {
"legal_address": "address"
}
}
}
При текущей структуре все последующие объекты в RequestReceive должны будут иметь зависимость от VariableReceive.
- Повтор TestRequest.php: (Уровень 1)
<?php namespace App\DTO; use LAVREEK\Library\Request\RequestReceive; /** * Запрос параметров необходимых для валидации токена. */ class TestRequest extends RequestReceive { /** @var string Проверяемый токен. */ public string $token; /** @var MetaRequest Метаданные пользователя. */ public MetaRequest $meta; }
- MetaRequest.php: (Уровень 2)
<?php namespace App\DTO; use LAVREEK\Library\Request\VariableReceive; /** * Запрос параметров необходимых для валидации метаданных. */ class MetaRequest extends VariableReceive { /** @var string Имя. */ public string $name; /** @var null|string Фамилия. */ public ?string $surname = null; /** @var AddressRequest Адрес пользователя */ public AddressRequest $address; }
- AddressRequest.php: (Уровень 3)
<?php namespace App\DTO; use LAVREEK\Library\Request\VariableReceive; /** * Запрос параметров необходимых для валидации адреса. */ class AddressRequest extends VariableReceive { /** @var string Адрес проживания. */ public string $legal_address; /** @var null|string Фактический адрес. */ public ?string $fact_address = null; }
Использование метода toArray()
При использовании метода toArray от экземпяра RequestReceive можно получить весь объект в виде массива.
Нулевые свойства будут добавлены в результирующий массив для дальнейшей валидации.
- Пример ответа
dd():
array:2 [ "token" => "eyJ.eyJ.ZDQ" "meta" => array:3 [ "name" => "name" "surname" => null "address" => array:2 [ "legal_address" => "address" "fact_address" => null ] ] ]
Отличие RequestReceive от VariableReceive
RequestReceive
Создаёт экземпляр Request (HTTP Foundation) из глобальных параметров. Используя эти параметры от создаёт VariableReceive. Т.е. он берёт параметры запроса, которые пришли в тело Request и передаёт в VariableReceive.
VariableReceive
Распределяет параметры полученные посредством создания экземпляра. Используя распаковку массива он проверяет все параметры, которые получил на входе.
Своё мнение по улучшению или по возникающим багам можно создать issue или передать сюда:
lavreeksolacki@yandex.ru