andrebian/doctrine-entity-traits

一组 Doctrine 实体基本特性

dev-master 2018-10-09 00:57 UTC

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 ;)