timehunter/laravel-dto-generator

通过数组模式创建PHP数据传输对象(DTO)的生成器。

2.2.1 2019-10-30 00:44 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:32 UTC


README

Latest Version on Packagist Total Downloads

一个DTO生成器,帮助您创建多个模型,而不是重复复制粘贴。

如果您觉得它有用,请为我点个星。^.^

请将您的版本更新为"~v2.0",并重新发布您的配置文件

在开发依赖项中安装包

通过Composer

composer require --dev timehunter/laravel-dto-generator "~2.2.1"

安装

  1. 创建您本地的配置文件
php artisan vendor:publish --provider="TimeHunter\LaravelDTOGenerator\LaravelDTOGeneratorServiceProvider"
  1. 在配置中添加您的数组模式
  2. 运行Artisan命令
php artisan make:dto
  1. 检查您指定的文件位置下的文件

示例

输入

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。有关更多信息,请参阅许可证文件