benycode / dto
基于 Laravel 验证的 DTO 表示形式
v1.0.3
2021-03-17 10:14 UTC
Requires
- php: ^7.4
- ext-json: *
- illuminate/contracts: >=5.5
- illuminate/support: >=5.5
Requires (Dev)
- orchestra/testbench: >=3.5
- phpunit/phpunit: ^8.5
- sempro/phpunit-pretty-print: ^1.2
This package is not auto-updated.
Last update: 2024-09-26 03:29:30 UTC
README
安装
您可以通过 composer 安装此包
composer require benycode/dto
介绍
处理数组非常痛苦。此包提供了一个简单的特质,可以使您的生命变得更加轻松。它允许您将数组转换为数据传输对象(DTO),并使用 Laravel 验证器外观进行验证。
以下是一些示例
class UserDTO implements Arrayable, JsonSerializable { use DTOTrait; /** * @var int */ private $id; /** * @var string */ private $name; /** * @var string */ private $avatarUrl; /** * UserDTO constructor. * @param int $id * @param string $name * @param string $avatarUrl */ public function __construct(int $id, string $name, string $avatarUrl) { $this->id = $id; $this->name = $name; $this->avatarUrl = $avatarUrl; } /** * @return int */ public function getId(): int { return $this->id; } /** * @return string */ public function getName(): string { return $this->name; } /** * @return string */ public function getAvatarUrl(): string { return $this->avatarUrl; } /** * @inheritDoc */ protected static function createFromArray(array $data): self { return new self( Arr::get($data, 'id'), Arr::get($data, 'name'), Arr::get($data, 'avatar_url') ); } /** * @return array */ protected static function validationRules(): array { return [ 'id' => 'required|integer', 'name' => 'required|string|max:255', 'avatar_url' => 'required|string|url', ]; } /** * @return array */ public function toArray(): array { return [ 'id' => $this->id, 'name' => $this->name, 'avatar_url' => $this->avatarUrl ]; } /** * @inheritDoc */ public function jsonSerialize(): array { return $this->toArray(); } }
然后您可以轻松地做
try { $dto = UserDTO::fromArray([ 'id' => 1, 'name' => 'Alex', 'avatar_url' => 'http://google.com' ]); dd($dto->toArray(), json_encode($dto)); } catch (ValidationException $exception) { dd($exception->errors()); }
示例
示例可以在 /tests/Unit/Samples
中找到