andrebian / doctrine-entity-traits
一组 Doctrine 实体基本特性
dev-master
2018-10-09 00:57 UTC
Requires
- php: >=7.1
- doctrine/orm: *
- zendframework/zend-hydrator: @stable
Requires (Dev)
- phpunit/phpunit: @stable
This package is auto-updated.
Last update: 2024-09-09 15:21:08 UTC
README
一组 Doctrine 实体基本特性。
目的
此特性集合的主要目的是避免代码重复。您只需导入所需的特性及其实体定义,getter 和 setter 就可以立即使用。
安装
composer require andrebian/doctrine-entity-traits
使用
<?php namespace YourNamespace; use Doctrine\ORM\Mapping as ORM; use Andrebian\Doctrine\EntityTraits\IdTrait; use Andrebian\Doctrine\EntityTraits\CreatedTrait; use Andrebian\Doctrine\EntityTraits\ModifiedTrait; /** * Class MyEntity * @ORM\Table(name="table_name") * @ORM\Entity() */ class MyEntity { // import the traits you need use IdTrait, CreatedTrait, ModifiedTrait; // this will provide the $id, $created and $modified properties // with its getters and setters // after this, you just need to write your entity specific properties, getters and setters /** * @var string * @ORM\Column(type="string", length=255, nullable=false) */ private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } }
很简单吧?
转换为数组
此特性是为了在实体中提供一个提取方法而创建的。但此特性非常通用,您几乎可以在任何地方使用它。看看这是如何实现的。
<?php namespace YourNamespace; use Andrebian\Doctrine\EntityTraits\ToArrayTrait; class YourAwesomeClass { use ToArrayTrait; }
在您的代码的任何位置,您可以简单地进行如下操作
<?php namespace YourNamespace; class YourOtherClass { public function someMethod() { $awesomeClass = new YourAwesomeClass(); $extractedData = $awesomeClass->toArray(); } }
填充
在 ToArrayTrait 的相反方向,此特性有助于从给定的数组设置类的属性。
<?php namespace YourNamespace; use Andrebian\Doctrine\EntityTraits\HydrateTrait; class YourClass { // a lot of properties here... use HydrateTrait; public function __construct($data = []) { if (!empty($data)) { $this->hydrate($data); } } }
并且可以在您的代码的任何位置。
<?php namespace YourNamespace; class YourOtherClass { public function someMethos() { $data = [ 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ]; $yourClass = new YourClass($data); } }
贡献
您可以通过打开一个 问题 或提交一个 Pull Request 来做出贡献。
分支此项目,进行改进/修复,并提交一个 Pull Request ;)