定制 dodo-it/entity-generator 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dodo-it/entity-generator

最新稳定版本:2.1.1

Composer 安装命令:

composer require dodo-it/entity-generator

包简介

Entity generator from database for almost any DBAL

README 文档

README

Highly customizable (typed) entity generator from database. It can generate entities for whole database, table/view and from raw SQL query

Latest Stable Version build Coverage Status PHPStan Total Downloads License

Installation

$ composer require dodo-it/entity-generator

How to run:

   $config = new \DodoIt\EntityGenerator\Generator\Config([
       'path' =>  __DIR__ . '/Entities',
       'extends' => \Examples\Pdo\Entities\Entity::class,
       'namespace' => 'Examples\Pdo\Entities'
   ]);

   $pdo = new \PDO('mysql:dbname=example;host=127.0.0.1', 'root', '');

   $generatorFactory = new \DodoIt\EntityGenerator\Factory\GeneratorPdoFactory($pdo);
   $generator = $generatorFactory->create($config);
   $generator->generate();

What kind of entities can I get?

Tool is highly customizable and can generate various different entity types of which most interesting are:

  • PHP 7.4 typed properties
class ArticleEntity extends YourBaseEntity
{
   public int $id;

   public ?string $title;

   public bool $published;

   public ?\DateTimeInterface $created_at;
}
  • properties with phpdoc
class ArticleEntity extends YourBaseEntity
{

	/** @var int */
	protected $id;

	/** @var string */
	protected $title;

	/** @var bool */
	protected $published;

	/** @var \DateTimeInterface */
	protected $created_at;
}
  • properties with getters and setters (methods body is customizable)
class ArticleEntity extends YourBaseEntity
{

	public function getId(): int
	{
		return $this->id;
	}


	public function setId(int $value): self
	{
		$this['id'] = $value;
		return $this;
	}


	public function getTitle(): ?string
	{
		return $this->title;
	}


	public function setTitle(?string $value): self
	{
		$this['title'] = $value;
		return $this;
	}


	public function getPublished(): bool
	{
		return $this->published;
	}


	public function setPublished(bool $value): self
	{
		$this['published'] = $value;
		return $this;
	}


	public function getCreatedAt(): ?\DateTimeInterface
	{
		return $this->created_at;
	}


	public function setCreatedAt(?\DateTimeInterface $value): self
	{
		$this['created_at'] = $value;
		return $this;
	}
  • phpdoc properties
/**
 * @property int $id
 * @property string $title
 * @property int $published
 * @property \DateTimeInterface $created_at
 */
class ArticleEntity extends YourBaseEntity
{
}
  • properties with phpdoc
class ArticleEntity extends YourBaseEntity
{
	/** @var int */
	public $id;

	/** @var string */
	public $title;

	/** @var bool */
	public $published;

	/** @var \DateTimeInterface */
	public $created_at;
  • it can generate column constants (use generateColumnConstants option)
class ArticleEntity extends YourBaseEntity
{
    	public const TABLE_NAME = 'articles';
    	public const ID = 'id';
    	public const TITLE = 'title';
    	public const PUBLISHED = 'published';
    	public const CREATED_AT = 'created_at';

.
.
.
  • almost any combination you can imagine, check src/Generator/Config.php for list of all options see example folder

You can add your own methods to entities and change getter/setter functions, they won't be overriden when regenerated if rewrite flag is set to false

Configuration

see src/Generator/Config.php

Docker integration

Entity Generator image

Docker Pulls https://hub.docker.com/r/pifou25/entity-generator

Generation from existing database

The database should be accessible from the docker network, the hostname is either the name of the Mysql running container, or localhost if db is running on host. The below command will generate entities into ./entities directory.

docker run --rm -v $PWD/entities:/app/entities --network some-network \
   -e MYSQL_HOSTNAME=some-mariadb \
   -e MYSQL_DATABASE=exmple-database \
   -e MYSQL_USERNAME=example-user \
   -e MYSQL_PASSWORD=my_cool_secret \
    pifou25/entity-generator

namespace and extends example

The base class must exist into /entities to be declared

docker run --rm -v $PWD/include/entities:/app/entities --network scripts_default \
   -e MYSQL_HOSTNAME=myhost \
   -e MYSQL_DATABASE=mydb \
   -e MYSQL_USERNAME=myuser \
   -e MYSQL_PASSWORD=mypwd \
   -e ENTITY_NAMESPACE=Example\\Pdo\\Entities \
   -e BASECLASS=Example\\Pdo\\Entities\Entity \
    entity-generator

Generation from flat plain SQL file

The docker compose file create a new database and initialize it with SQL data, you have to put SQL init file into ./examples directory. When db is ready, the entity-generator start on it to generate PHP entities.

It is as simple as running this command from the docker directory : docker compose up

统计信息

  • 总下载量: 122.89k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-02-23