yiisoft / input-http
Maps data from PSR-7 HTTP request to PHP DTO representing user input.
Fund package maintenance!
Opencollective
yiisoft
Installs: 23 013
Dependents: 4
Suggesters: 0
Security: 0
Stars: 10
Watchers: 16
Forks: 2
Open Issues: 1
Requires
- php: ^8.1
- psr/container: ^1.0|^2.0
- psr/http-message: ^1.0|^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- yiisoft/arrays: ^3.0
- yiisoft/hydrator: ^1.0
- yiisoft/hydrator-validator: ^2.0
- yiisoft/middleware-dispatcher: ^5.1
- yiisoft/request-provider: ^1.0
- yiisoft/validator: ^1.1|^2.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.7
- phpunit/phpunit: ^10.5
- rector/rector: ^1.0.0
- roave/infection-static-analysis-plugin: ^1.34
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^5.22
- yiisoft/di: ^1.2
- yiisoft/test-support: ^3.0
This package is auto-updated.
Last update: 2024-10-29 11:35:44 UTC
README
Yii Input HTTP
The package provides Yii Hydrator attributes to get data from PSR-7 HTTP request and adds extra abilities to middlewares processed by Yii Middleware Dispatcher:
- maps data from PSR-7 HTTP request to PHP DTO representing user input;
- uses Yii Hydrator parameter attributes for resolving middleware parameters.
Requirements
- PHP 8.1 or higher.
Installation
The package could be installed with Composer:
composer require yiisoft/input-http
General usage
Yii Input HTTP allows having DTO with attributes like this:
use Yiisoft\Input\Http\AbstractInput; use Yiisoft\Input\Http\Attribute\Data\FromBody; #[FromBody] final class UpdatePostInput extends AbstractInput { public int $id; public string $title; public string $description = ''; public string $content; }
and automatically resolve and hydrate it, for example, for arguments like that:
final class UpdatePostController { public function update(UpdatePostInput $post): ResponseInterface { // ... /** @var ResponseInterface $response */ return $response; } }
Note that FromBody
attribute assumes that request body is parsed. If your implementation of request doesn't parse body
automatically, you can use yiisoft/request-body-parser middleware
to prepare it.
Basic steps:
- Configure storing request.
- Configure parameters resolver.
- Create DTO (request input).
- Mark DTO properties with hydrator attributes provided by this package.
- Add DTO class name as a type hint to a class method argument where you want to it to be resolved.
Documentation
- Guide: English, Português - Brasil.
- Internals
If you need help or have a question, the Yii Forum is a good place for that. You may also check out other Yii Community Resources.
License
The Yii Input HTTP is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.