timehunter / laravel-dto-generator
通过数组模式创建PHP数据传输对象(DTO)的生成器。
2.2.1
2019-10-30 00:44 UTC
Requires
- nette/php-generator: ^3.2
README
一个DTO生成器,帮助您创建多个模型,而不是重复复制粘贴。
如果您觉得它有用,请为我点个星。^.^
请将您的版本更新为"~v2.0",并重新发布您的配置文件
在开发依赖项中安装包
通过Composer
composer require --dev timehunter/laravel-dto-generator "~2.2.1"
安装
- 创建您本地的配置文件
php artisan vendor:publish --provider="TimeHunter\LaravelDTOGenerator\LaravelDTOGeneratorServiceProvider"
- 在配置中添加您的数组模式
- 运行Artisan命令
php artisan make:dto
- 检查您指定的文件位置下的文件
示例
输入
PHP数组模式
'post' => (object)[ 'author' => (object)[ 'id' => 1, 'note' => null, 'rating' => 4.6, 'first_name' => '', 'last_name' => '', ], 'comment' => (object)[ 'comment_by' => (object)[ 'is_active' => false, 'first_name' => '', 'last_name' => '' ], 'content' => '' ], 'followers' => (object)[ 'id' => 1, 'follower_users' => (array)[ 'first_name' => '', 'last_name' => '' ] ], 'views' => 123, 'text' => '', 'date' => '2019-01-01' ], 'feedback' => (object)[ 'comment' => '' ]
注意:每个对象都应该定义键名。
- 如果是对象,请将其定义为
object
,参见上面。 - 如果您的组件是对象的数组,请将其定义为纯数组。
- 您必须为每个属性分配一个值,例如,对于
first_name
,分配一个空字符串''
。
示例输出使用
$result = Followers::create()->setId(1) ->addFollowerUsers( FollowerUsers::create() ->setFirstName('ss') ->setLastName('dd') ) ->addFollowerUsers( FollowerUsers::create() ->setFirstName('ss') ->setLastName('dd') ); var_dump($result->toArray());
输出 - DTOs
用户类
<?php namespace App; class User { /** @var bool $isActive */ private $isActive; /** @var string $firstName */ private $firstName; /** @var string $lastName */ private $lastName; /** * @return User */ public static function create() { return new self; } /** * @return bool */ public function getIsActive(): bool { return $this->isActive; } /** * @param bool $isActive * @return $this */ public function setIsActive(bool $isActive): self { $this->isActive = $isActive; return $this; } /** * @return string */ public function getFirstName(): string { return $this->firstName; } /** * @param string $firstName * @return $this */ public function setFirstName(string $firstName): self { $this->firstName = $firstName; return $this; } /** * @return string */ public function getLastName(): string { return $this->lastName; } /** * @param string $lastName * @return $this */ public function setLastName(string $lastName): self { $this->lastName = $lastName; return $this; } /** * @return array */ public function toArray(): array { return [ 'is_active' => $this->isActive, 'first_name' => $this->firstName, 'last_name' => $this->lastName, ]; } }
评论类
namespace App; class Comment { /** @var User $user */ private $user; /** @var string $content */ private $content; /** * @return Comment */ public static function create() { return new self; } /** * @param user $user * @return $this */ public function addUser(User $user): self { $this->user = $user; return $this; } /** * @return User */ public function getUser(): User { return $this->user; } /** * @param User $user * @return $this */ public function setUser(User $user): self { $this->user = $user; return $this; } /** * @return string */ public function getContent(): string { return $this->content; } /** * @param string $content * @return $this */ public function setContent(string $content): self { $this->content = $content; return $this; } /** * @return array */ public function toArray(): array { return [ 'user' => $this->user->toArray(), 'content' => $this->content, ]; } }
作者类
namespace App; class Author { /** @var int $id */ private $id; /** @var $note */ private $note; /** @var float $rating */ private $rating; /** @var string $firstName */ private $firstName; /** @var string $lastName */ private $lastName; /** * @return Author */ public static function create() { return new self; } /** * @return int */ public function getId(): int { return $this->id; } /** * @param int $id * @return $this */ public function setId(int $id): self { $this->id = $id; return $this; } /** * @return mixed */ public function getNote() { return $this->note; } /** * @param $note * @return $this */ public function setNote($note): self { $this->note = $note; return $this; } /** * @return float */ public function getRating(): float { return $this->rating; } /** * @param float $rating * @return $this */ public function setRating(float $rating): self { $this->rating = $rating; return $this; } /** * @return string */ public function getFirstName(): string { return $this->firstName; } /** * @param string $firstName * @return $this */ public function setFirstName(string $firstName): self { $this->firstName = $firstName; return $this; } /** * @return string */ public function getLastName(): string { return $this->lastName; } /** * @param string $lastName * @return $this */ public function setLastName(string $lastName): self { $this->lastName = $lastName; return $this; } /** * @return array */ public function toArray(): array { return [ 'id' => $this->id, 'note' => $this->note, 'rating' => $this->rating, 'first_name' => $this->firstName, 'last_name' => $this->lastName, ]; } }
关注者类
namespace App; class Followers { /** @var int $id */ private $id; /** @var FollowerUsers[] $followerUsers */ private $followerUsers = []; /** * @return Followers */ public static function create() { return new self; } /** * @return int */ public function getId(): int { return $this->id; } /** * @param int $id * @return $this */ public function setId(int $id): self { $this->id = $id; return $this; } /** * @param followerUsers $followerUsers * @return $this */ public function addFollowerUsers(FollowerUsers $followerUsers): self { $this->followerUsers[] = $followerUsers; return $this; } /** * @return FollowerUsers[] */ public function getFollowerUsers() { return $this->followerUsers; } /** * @param FollowerUsers[] $followerUsers * @return $this */ public function setFollowerUsers($followerUsers): self { $this->followerUsers = $followerUsers; return $this; } /** * @return array */ public function toArray(): array { return [ 'id' => $this->id, 'follower_users' => array_map(function (FollowerUsers $data){ return $data->toArray(); }, $this->followerUsers), ]; } }
关注者用户类
namespace App; class FollowerUsers { /** @var string $firstName */ private $firstName; /** @var string $lastName */ private $lastName; /** * @return FollowerUsers */ public static function create() { return new self; } /** * @return string */ public function getFirstName(): string { return $this->firstName; } /** * @param string $firstName * @return $this */ public function setFirstName(string $firstName): self { $this->firstName = $firstName; return $this; } /** * @return string */ public function getLastName(): string { return $this->lastName; } /** * @param string $lastName * @return $this */ public function setLastName(string $lastName): self { $this->lastName = $lastName; return $this; } /** * @return array */ public function toArray(): array { return [ 'first_name' => $this->firstName, 'last_name' => $this->lastName, ]; } }
许可证
MIT。有关更多信息,请参阅许可证文件。