kryptamine / dto
基于 Laravel 验证的 Data Transfer Object 表示形式
1.0.0
2020-02-01 09:08 UTC
Requires
- php: ^7.2
- 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 auto-updated.
Last update: 2024-09-29 05:29:04 UTC
README
安装
您可以通过 composer 安装此包
composer require kryptamine/dto
介绍
处理数组非常痛苦。此包代表了一个简单的特性,可以使您的生活更加轻松。它允许您将数组转换为 Data Transfer Objects,并使用 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
中找到