tangoman/entity-helper

2.1.3 2020-06-16 14:13 UTC

This package is auto-updated.

Last update: 2024-09-16 23:22:57 UTC


README

TangoMan 实体助手 为项目实体提供了一系列常用属性的特质。

特性

  • 包含自定义消息(法语)的断言,用于属性验证。
  • 所有属性的流畅设置器,支持链式调用。
  • 魔幻 JSON 序列化。

安装

步骤 1:下载助手

打开命令行,进入您的项目目录,并执行以下命令以下载此助手的最新稳定版本

$ composer require tangoman/entity-helper

此命令要求您已全局安装 Composer,具体请参阅 Composer 文档中的安装章节

步骤 2:启用 VichUploader

由于 TangoMan 实体助手 需要 VichUploaderBundle,如果您计划使用 UploadableDocumentUploadableImage 特质,请通过将其添加到项目的 app/AppKernel.php 文件中注册的包列表来启用该包。

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    // ...

    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Vich\UploaderBundle\VichUploaderBundle(),
        );

        // ...
    }
}

步骤 3:实现您的实体

在您的实体中添加所需的特质的使用声明。以下为可用特质的完整列表。

步骤 4:更新数据库模式

打开命令行,进入您的项目目录,并执行以下命令以更新您的数据库模式

$ php bin/console schema:update

用法

在实体类内部:某些特质可能需要您的实体类使用 Symfony\Component\Validator\Constraints 进行验证。 UploadableDocumentUploadableImage 特质将需要您的实体类使用 Vich\UploaderBundle\Mapping\Annotation as Vich 注解。

src\AppBundle\Entity\FooBar.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Mapping\Annotation as Vich;

// ...

use TangoMan\EntityHelper\Traits\Categorized;
use TangoMan\EntityHelper\Traits\Embeddable;
use TangoMan\EntityHelper\Traits\Featurable;
use TangoMan\EntityHelper\Traits\HasAddress;
use TangoMan\EntityHelper\Traits\HasBirthDate;
use TangoMan\EntityHelper\Traits\HasClickDate;
use TangoMan\EntityHelper\Traits\HasEmail;
use TangoMan\EntityHelper\Traits\HasFirstAndLastName;
use TangoMan\EntityHelper\Traits\HasFontAwesomeIcon;
use TangoMan\EntityHelper\Traits\HasGender;
use TangoMan\EntityHelper\Traits\HasGlyphicon;
use TangoMan\EntityHelper\Traits\HasIcon;
use TangoMan\EntityHelper\Traits\HasLabel;
use TangoMan\EntityHelper\Traits\HasMobile;
use TangoMan\EntityHelper\Traits\HasName;
use TangoMan\EntityHelper\Traits\HasPhone;
use TangoMan\EntityHelper\Traits\HasRoles;
use TangoMan\EntityHelper\Traits\HasSummary;
use TangoMan\EntityHelper\Traits\HasText;
use TangoMan\EntityHelper\Traits\HasTimePeriod;
use TangoMan\EntityHelper\Traits\HasTitle;
use TangoMan\EntityHelper\Traits\HasType;
use TangoMan\EntityHelper\Traits\HasViews;
use TangoMan\EntityHelper\Traits\HasWebsite;
use TangoMan\EntityHelper\Traits\HasWork;
use TangoMan\EntityHelper\Traits\Illustrable;
use TangoMan\EntityHelper\Traits\JsonSerializable;
use TangoMan\EntityHelper\Traits\Privatable;
use TangoMan\EntityHelper\Traits\Publishable;
use TangoMan\EntityHelper\Traits\Sluggable;
use TangoMan\EntityHelper\Traits\Slugify;
use TangoMan\EntityHelper\Traits\Timestampable;
use TangoMan\EntityHelper\Traits\UploadableDocument;
use TangoMan\EntityHelper\Traits\UploadableImage;

/**
 * Class Foobar
 *
 * @package AppBundle\Entity
 */
class Foobar
{
    use Categorized;
    use Embeddable;
    use Featurable;
    use HasAddress;
    use HasBirthDate;
    use HasClickDate;
    use HasEmail;
    use HasFirstAndLastName;
    use HasFontAwesomeIcon;
    use HasGender;
    use HasGlyphicon;
    use HasIcon;
    use HasLabel;
    use HasMobile;
    use HasName;
    use HasPhone;
    use HasRoles;
    use HasSummary;
    use HasText;
    use HasTimePeriod;
    use HasTitle;
    use HasType;
    use HasViews;
    use HasWebsite;
    use HasWork;
    use Illustrable;
    use JsonSerializable;
    use Privatable;
    use Publishable;
    use Sluggable;
    use Slugify;
    use Timestampable;
    use UploadableDocument;
    use UploadableImage;

    // ...
}

JsonSerializable 特质

魔法方法,使您的实体可被 jsonserializable。允许使用 php json_encode() 函数处理您的对象。

$fooBar = new FooBar;
$json = json_encode($fooBar, JSON_PRETTY_PRINT);
echo $json;

为了在您的对象上使用 php JsonSerializable 接口,您的类必须实现 \JsonSerializable src\AppBundle\Entity\FooBar.php

namespace AppBundle\Entity;

use TangoMan\EntityHelper\Traits\JsonSerializable;

class FooBar implements \JsonSerializable {
    use JsonSerializable;

    // ...

注意

如果您发现任何错误,请在此处报告:问题

许可

版权所有 (c) 2018 Matthias Morin

License 在 MIT 许可下分发。

如果您喜欢 TangoMan 实体助手,请给它加星!并关注我的 GitHub:TangoMan75 ... 并查看我的其他有趣项目。

Matthias Morin | LinkedIn