梦游者 / entity-behaviours
Requires
- php: >=7
- somnambulist/value-objects: ~1.2
README
此仓库已被存档。请更新到组合包。
实体行为
提供一些有用的接口和特性,可用于与实体一起使用。这些特性实现了基本方法,但仍需要例如发布/取消发布等实现。
需求
- PHP 7+
安装
使用composer安装,或从github.com检出/拉取文件。
- composer require somnambulist/entity-behaviours
行为
与somnambulist/laravel-doctrine-behaviours包不同,这些行为旨在在一个更加受控和领域驱动开发(DDD)的基础上使用。因此,它们不实现setter,在某些情况下甚至不实现接口中定义的方法,因为这些是应该在你系统中触发事件的域核心方法。
-
可激活
为实体添加
activate()
/deactivate()
方法,以控制实体是否活跃。实体应实现激活/取消激活方法,以便触发事件。 -
全局可跟踪
其他接口的集合:Identifiable、Nameable、Timestampable、UniversallyIdentifiable。
-
Identifiable
添加一个返回主要标识符(int、string、object)的
id()
方法 -
IdentifiableWithTimestamps
Identifiable和Timestampable的组合
-
Nameable
添加一个返回实体名称组件的
name()
方法 -
可数值排序
为实体添加一个
ordinal()
和更新方法,用于添加数值排序索引。 -
可发布
添加用于控制实体是否“发布”的
publish()
/unpublish()
。使用DateTime值对象。publish/unpublish未实现,因为它们应在使用时触发事件。 -
可字符串化
添加
__toString()
和toString()
方法,该方法将尝试以下方法:displayAs()
title()
name()
如果都不存在,则返回空字符串。
-
可时间戳
添加
createdAt()
/updatedAt()
方法。不定义setter,因为实体应在通过更新调用更改时更新updatedAt,而不是依赖于数据库行为。 -
可跟踪
其他接口的集合:Identifiable、Nameable、Timestampable
-
全局唯一标识符
添加一个返回Uuid值对象的
uuid()
方法 -
可版本化
添加用于定义当前实体版本的
version()
和incrementVersion()
方法。incrementVersion应在适当的更新方法中挂钩,当实体被修改时。
实用工具
-
实体访问器
辅助类,用于访问属性方法/属性。仅用于单元测试。