tangoman / entity-helper
Symfony 实体助手
Requires
- php: >=5.5.0
- ext-json: *
- ext-simplexml: *
Requires (Dev)
- symfony/phpunit-bridge: ^3.4
- symfony/symfony: ^3.4 !=3.4.13
README
TangoMan 实体助手 为项目实体提供了一系列常用属性的特质。
特性
- 包含自定义消息(法语)的断言,用于属性验证。
- 所有属性的流畅设置器,支持链式调用。
- 魔幻 JSON 序列化。
安装
步骤 1:下载助手
打开命令行,进入您的项目目录,并执行以下命令以下载此助手的最新稳定版本
$ composer require tangoman/entity-helper
此命令要求您已全局安装 Composer,具体请参阅 Composer 文档中的安装章节。
步骤 2:启用 VichUploader
由于 TangoMan 实体助手 需要 VichUploaderBundle,如果您计划使用 UploadableDocument 或 UploadableImage 特质,请通过将其添加到项目的 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 进行验证。 UploadableDocument 和 UploadableImage 特质将需要您的实体类使用 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
如果您喜欢 TangoMan 实体助手,请给它加星!并关注我的 GitHub:TangoMan75 ... 并查看我的其他有趣项目。