shindakioku / request-hydrator
Request hydrator into DTO with Validation
0.1.10
2019-11-04 19:51 UTC
Requires
- php: ^7.2
- illuminate/http: ^6.0@dev
- illuminate/translation: ^6.0@dev
- illuminate/validation: ^6.0@dev
- lstrojny/functional-php: dev-master
- php-slang/php-slang: dev-master
Requires (Dev)
README
<?php namespace App\Requests\Users; use RequestHydator\App\Dto\DtoHydrator; class CreateUser extends DtoHydrator { public function rules(): array { return [ 'username' => 'required|string', 'email' => 'required|email' ]; } }
<?php use RequestHydrator\App\RequestHydrator; namespace App\Http\Controllers; class UsersController { private RequestHydrator $requestHydrator; public function __construct(RequestHydrator $requestHydrator) { $this->requestHydrator = $requestHydrator; } public function create() { return $this->requestHydrator->queries(new CreateUser) ->left(fn($validationErrors) => ...) ->right(fn(CreateUser $user) => $this->register->execute($user)); } }
<?php use RequestHydrator\App\Request\Request; use \PhpSlang\Option\Option; class MyGreatRequest implements Request { public function queries(array $keys = []): Option { return Option::of($_GET); } public function headers(array $keys = []): Option { return Option::of(\getallheaders()); } public function body(array $keys = []): Option { return Option::of($_POST); } }