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文档
- 自动生成的
phpDocumentor
API 文档可在 https://locomotivemtl.github.io/charcoal-object/docs/master/ 找到 - 自动生成的
apigen
API 文档可在 https://codedoc.pub/locomotivemtl/charcoal-object/master/ 找到
开发依赖项
phpunit/phpunit
squizlabs/php_codesniffer
satooshi/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许可证。详细信息请参阅许可证。