charcoal / object
对象(内容和用户数据)的定义以及对象行为和工具。
Requires
- php: ^7.4 || ^8.0
- charcoal/config: ^5.0
- charcoal/core: ^5.0
- charcoal/factory: ^5.0
- charcoal/translator: ^5.0
- psr/log: ^1.0
Requires (Dev)
- ext-json: *
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- pimple/pimple: ^3.0
- seld/jsonlint: ^1.9
- squizlabs/php_codesniffer: ^3.5
- tedivm/stash: ~0.16
Replaces
- dev-main / 5.x-dev
- v5.0.0
- v4.1.0
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- 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-09-13 16:16:26 UTC
README
Object包提供了构建用户界面网站所需的抽象对象、行为和工具。
安装
composer require charcoal/object
概述
该包提供了一系列基本类、辅助工具以及对象行为(接口+特质)。
基本类
所有木炭项目对象类应该扩展以下两个基类之一,\Charcoal\Object\Content
,用于由管理员创建和管理的数据,或\Charcoal\Object\UserData
,用于从客户端/用户创建的数据。
内容
内容 基类应用于所有可“管理”的对象。通常由管理员通过 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
用户数据
用户数据 类应用于所有预期从项目的“客户端”或“最终用户”输入的对象。
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])
计划操作应通过及时的计划任务运行。charcoal/admin 模块包含一个自动运行计划的脚本。
./vendor/bin/charcoal admin/object/process-schedules`
资源
- 贡献
- 报告问题 和 发送拉取请求 在 主 Charcoal 仓库