梦游者/entity-behaviours

此包已弃用,不再维护。作者建议使用 somnambulist/domain 包。

一组用于实体的行为和接口

1.2.1 2017-10-18 00:07 UTC

This package is auto-updated.

Last update: 2020-02-03 17:24:10 UTC


README

此仓库已被存档。请更新到组合包。

实体行为

提供一些有用的接口和特性,可用于与实体一起使用。这些特性实现了基本方法,但仍需要例如发布/取消发布等实现。

需求

  • PHP 7+

安装

使用composer安装,或从github.com检出/拉取文件。

  • composer require somnambulist/entity-behaviours

行为

与somnambulist/laravel-doctrine-behaviours包不同,这些行为旨在在一个更加受控和领域驱动开发(DDD)的基础上使用。因此,它们不实现setter,在某些情况下甚至不实现接口中定义的方法,因为这些是应该在你系统中触发事件的域核心方法。

  1. 可激活

    为实体添加activate()/deactivate()方法,以控制实体是否活跃。实体应实现激活/取消激活方法,以便触发事件。

  2. 全局可跟踪

    其他接口的集合:Identifiable、Nameable、Timestampable、UniversallyIdentifiable。

  3. Identifiable

    添加一个返回主要标识符(int、string、object)的id()方法

  4. IdentifiableWithTimestamps

    Identifiable和Timestampable的组合

  5. Nameable

    添加一个返回实体名称组件的name()方法

  6. 可数值排序

    为实体添加一个ordinal()和更新方法,用于添加数值排序索引。

  7. 可发布

    添加用于控制实体是否“发布”的publish()/unpublish()。使用DateTime值对象。publish/unpublish未实现,因为它们应在使用时触发事件。

  8. 可字符串化

    添加__toString()toString()方法,该方法将尝试以下方法:

    • displayAs()
    • title()
    • name()

    如果都不存在,则返回空字符串。

  9. 可时间戳

    添加createdAt()/updatedAt()方法。不定义setter,因为实体应在通过更新调用更改时更新updatedAt,而不是依赖于数据库行为。

  10. 可跟踪

    其他接口的集合:Identifiable、Nameable、Timestampable

  11. 全局唯一标识符

    添加一个返回Uuid值对象的uuid()方法

  12. 可版本化

    添加用于定义当前实体版本的version()incrementVersion()方法。incrementVersion应在适当的更新方法中挂钩,当实体被修改时。

实用工具

  • 实体访问器

    辅助类,用于访问属性方法/属性。仅用于单元测试。