locomotivemtl / charcoal-object
对象(内容和使用者数据)定义,以及对象行为和工具。
Requires
- php: ^7.3 || ^8.0
- locomotivemtl/charcoal-config: ~0.10
- locomotivemtl/charcoal-core: ~0.5
- locomotivemtl/charcoal-factory: ~0.4
- locomotivemtl/charcoal-translator: ~0.3
- psr/log: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^9.0
- pimple/pimple: ^3.0
- seld/jsonlint: ^1.8
- squizlabs/php_codesniffer: ^3.5
- tedivm/stash: ~0.16
- dev-master / 0.8.x-dev
- 0.8.1
- 0.8.0.1
- 0.8.0
- 0.7.4.1
- 0.7.4
- 0.7.3.1
- 0.7.3
- 0.7.2
- 0.7.1.5
- 0.7.1.4
- 0.7.1.3
- 0.7.1.2
- 0.7.1.1
- 0.7.1
- 0.7.0
- 0.6.2.1
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.1
- 0.5.0
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4
- 0.3.0.1
- 0.3
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1.1
- 0.2.1
- 0.2
- 0.1.3.1
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-feature/camelizePropertiesAndUseArrayAccess
- dev-mducharme-camelcase
- dev-mcaskill-feature-softdeletable
This package is auto-updated.
Last update: 2024-08-30 01:05:59 UTC
README
对象定义(内容和使用者数据)、行为和工具。
目录
如何安装
安装 charcoal-object 的首选(也是唯一支持)方式是使用 composer
★ composer require locomotivemtl/charcoal-object
依赖项
- PHP 5.6+
- 这是最后一个支持的 PHP 版本。
PHP 7也受支持(意味着 travis 上为绿色…)。
Charcoal 对象
命名空间 \Charcoal\Object 提供了大量基本类、助手以及对象行为(接口 + traits)。
基本类
所有 Charcoal 项目的对象类都应扩展以下两个基础类之一,\Charcoal\Object\Content,用于由管理员创建和管理的数据,或 \Charcoal\Object\UserData,用于来自客户端/用户创建的数据。
内容
应使用 Content 基础类来处理所有可以“管理”的对象。通常由管理员通过 charcoal-admin 模块管理。它向对象添加“活动”标志以及创建和修改信息。
API
setActive($active)active()setPosition($position)position()setCreated($created)created()setCreatedBy($createdBy)createdBy()setLastModified($lastModified)lastModified()setLastModifiedBy($lastModifiedBy)lastModifiedBy()
Content类扩展了来自charcoal-core模块的\Charcoal\Model\AbstractModel,这意味着它也继承了其 API 以及DescribableInterface(metadata(),setMetadata()和loadMetadata()等等)和StorableInterface(id(),key(),save(),update(),delete(),load(),loadFrom(),loadFromQuery(),source()和setSource()等等)。
AbstractModel类扩展了\Charcoal\Config\AbstractEntity,它还定义了基本数据访问方法(setData(),data(),keys(),has(),get(),set(),以及ArrayAccess,JsonSerializable和Serializable接口)。
属性(元数据)
[1] 在 save() 时自动生成
[2] 在 update() 时自动生成
默认元数据定义在
metadata/charcoal/object/content.json
使用者数据
应使用 UserData 类来处理所有预期从项目的“客户端”或“最终用户”输入的对象。
API
setIp($ip)ip()setTs($ts)ts()setLang($lang)lang()
Content类扩展了来自charcoal-core模块的\Charcoal\Model\AbstractModel,这意味着它也继承了其 API 以及DescribableInterface(metadata(),setMetadata()和loadMetadata()等等)和StorableInterface(id(),key(),save(),update(),delete(),load(),loadFrom(),loadFromQuery(),source()和setSource()等等)。
AbstractModel类扩展了\Charcoal\Config\AbstractEntity,它还定义了基本数据访问方法(setData(),data(),keys(),has(),get(),set(),以及ArrayAccess,JsonSerializable和Serializable接口)。
属性(元数据)
[1] 在 save() 和 update() 时自动生成
默认元数据定义在
metadata/charcoal/object/user-data.json
对象行为
可存档
存档行为尚未文档化。它仍在积极开发中。
可分类
API
setCategory($category)category()setCategoryType($type)categoryType()
属性(元数据)
[1] 实现的元数据中必须明确设置类别 obj_type。
默认元数据定义在
metadata/charcoal/object/catgorizable-interface.json
类别
API
setCategoryItemType($type)categoryItemType()numCategoryItems()hasCategoryItems()categoryItems()
属性(元数据)
默认元数据定义在
metadata/charcoal/object/catgory-interface.json
分层
API
hasMaster()isTopLevel()isLastLevel()hierarchyLevel()master()toplevelMaster()hierarchy()invertedHierarchy()isMasterOf($child)recursiveIsMasterOf($child)hasChildren()numChildren()recursiveNumChildren()children()isChildOf($master)recursiveIsChildOf($master)hasSiblings()numSiblings()siblings()isSiblingOf($sibling)
属性(元数据)
默认元数据定义在
metadata/charcoal/object/hierarchical-interface.json。
可发布
setPublishDate($publishDate)publishDate()setExpiryDate($expiryDate)expiryDate()setPublishStatus($status)publishStatus()isPublished()
属性(元数据)
默认元数据定义在
metadata/charcoal/object/publishable-interface.json。
可修订
可修订对象实现了 \Charcoal\Object\Revision\RevisionableInterface,这可以通过使用 \Charcoal\Object\Revision\RevisionableTrait 来轻松实现。
可修订对象创建 修订版,记录对象版本之间的变更,作为 差异。
API
setRevisionEnabled(bool$enabled)revisionEnabled()revisionObject()generateRevision()latestRevision()revisionNum(integer $revNum)allRevisions(callable $callback = null)revertToRevision(integer $revNum)
属性(元数据)
可修订行为不实现任何属性,因为所有逻辑和数据都包含在修订版中。
可路由
可路由行为尚未文档化。它仍在积极开发中。
助手
ObjectDraft
…
ObjectRevision
在 存储 中的每次 update 操作中,可修订对象都会创建一个新的 修订版(一个 \Charcoal\Object\ObjectRevision 实例),它记录了对象版本之间的变更(差异)
修订属性
修订方法
createFromObject(RevisionableInterface $obj)createDiff(array $dataPrev, array $dataObj)lastObjectRevision(RevisionableInterface $obj)objectRevisionNum(RevisionableInterface $obj, integer $revNum)
ObjetSchedule
(通常从charcoal管理后端)可以创建 计划(一个 \Charcaol\Object\ObjectSchedule 实例),该计划将一组更改自动应用于对象
计划属性
计划方法(API)
process([callable $callback, callable $successCallback,callable $failureCallback])
计划操作应该通过定时cron作业运行。charcoal-admin模块包含一个自动运行计划的脚本
★ ./vendor/bin/charcoal admin/object/process-schedules`
开发
安装开发环境
★ composer install --prefer-source
运行脚本(phplint、phpcs和phpunit)
★ composer test
API文档
- 自动生成的
phpDocumentorAPI 文档可在 https://locomotivemtl.github.io/charcoal-object/docs/master/ 找到 - 自动生成的
apigenAPI 文档可在 https://codedoc.pub/locomotivemtl/charcoal-object/master/ 找到
开发依赖项
phpunit/phpunitsquizlabs/php_codesniffersatooshi/php-coveralls
持续集成
编码风格
charcoal-object模块遵循Charcoal编码风格
- PSR-1
- PSR-2
- PSR-4,因此自动加载由 Composer 提供。
- phpDocumentor 注释。
- 请阅读 phpcs.xml 文件以获取有关代码风格的所有详细信息。
可以使用
composer phpcs执行代码风格验证/强制执行。还可以使用composer phpcbf使用自动修复器。
作者
- Mathieu Ducharme,mat@locomotive.ca
- Chauncey McAskill
- Locomotive Inc.
许可证
木炭采用MIT许可证。详细信息请参阅许可证。