charcoal / 属性
Charcoal Property 定义了一个对象(提供元数据)
Requires
- php: ^7.4 || ^8.0
- ext-fileinfo: *
- ext-pdo: *
- ext-simplexml: *
- charcoal/config: ^5.0
- charcoal/core: ^5.0
- charcoal/factory: ^5.0
- charcoal/image: ^5.0
- charcoal/translator: ^5.0
- psr/cache: ^1.0
- psr/log: ^1.0
Requires (Dev)
- cache/void-adapter: ^1.0
- mustache/mustache: ^2.11
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.5
- pimple/pimple: ^3.0
- 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.11.1.3
- 0.11.1.2
- 0.11.1.1
- 0.11.1
- 0.11.0.1
- 0.11.0
- 0.10.5
- 0.10.4.2
- 0.10.4.1
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.0
- 0.8.4
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.x-dev
- 0.7.4.3
- 0.7.4.2
- 0.7.4.1
- 0.7.4.0
- 0.7.3.1
- 0.7.3
- 0.7.2
- 0.7.1.1
- 0.7.1
- 0.7.0.5
- 0.7.0.4
- 0.7.0.3
- 0.7.0.2
- 0.7.0.1
- 0.7.0
- 0.6.7
- 0.6.6.2
- 0.6.6.1
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6
- 0.5.3
- 0.5.2
- 0.5.1.1
- 0.5.1
- 0.5.0.3
- 0.5.0.2
- 0.5.0.1
- 0.5
- 0.4.6
- 0.4.5.1
- 0.4.5
- 0.4.4
- 0.4.3.1
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3
- 0.2
- 0.1
- dev-dev/joel/image-compression
- dev-joel/feat/query
- dev-mducharme-camelcase
- dev-mcaskill-callable-choices
This package is auto-updated.
Last update: 2024-09-13 16:14:27 UTC
README
Property 包提供定义对象元数据的抽象工具。
安装
composer require charcoal/property
概述
属性在对象的 Charcoal 模型 的 metadata
中全局定义。它们提供属性定义、存储定义和验证定义。
metadata()
方法定义在\Charcoal\Model\DescribableInterface
中。而properties()
方法定义在\Charcoal\Property\DescribablePropertyInterface
中。
属性选项
基本属性接口(API)需要/提供以下成员
备注
- [†] 表示用于验证的选项。
所有这些方法都可以通过
setData()
方法或标准 PSR-1/PSR-2 getter / setter 访问。(foo
将有foo()
作为 getter 和setFoo()
作为 setter)。
数据检索
- 要获取一个规范化的值,请使用
parseVal($val)
方法。 - 要获取一个安全的、可显示的值,请使用
displayVal($val)
。 - 要获取存储准备格式,请使用
storageVal($val)
。
可以在每个属性中进一步定义自定义数据检索方法。(例如,格式化日期或自定义颜色格式)。
默认验证
验证通过 Validator
对象提供,该对象来自 charcoal/core。
required
unique
allow_null
验证正在用新的 charcoal/validator 包重建。
源和存储方法
属性需要 4 个方法才能与 SQL 源集成
sqlEncoding()
字符串 SQL 列编码 & 校对(例如:utf8mb4
)sqlExtra()
字符串 将附加的原始 SQL 字符串sqlType()
字符串 SQL 列类型(例如:VARCHAR(16)
)sqlPdoType()
整数 PDO 列类型(例如:PDO::PARAM_STR
)
这些方法是 抽象的,因此必须在实际属性中实现。
属性类型
检索
布尔属性
布尔属性是最简单的一种:它只保存布尔值(true
/ false
)。
布尔属性选项
布尔属性向 基本属性选项 添加以下概念
备注
- [†] 表示用于验证的选项。
⚠ 布尔属性不能是多个。(
multiple()
总是返回false
)。在布尔属性上调用setMultiple(true)
会抛出异常。
颜色属性
颜色属性存储一个颜色。如果不支持 alpha,则存储为十六进制值(例如:#5590BA
)。如果支持 alpha,则存储为 rgba() 字符串值(例如:rgb(85, 144, 186, 0.5)
)。
颜色属性选项
布尔属性向 基本属性选项 添加以下概念
备注
- [†] 表示用于验证的选项。
日期时间属性
日期时间属性存储日期(和时间)值。
日期时间属性选项
日期时间属性向 基本属性选项 添加以下概念
备注
- [†] 表示用于验证的选项。
⚠ 日期时间属性不能是多个。(
multiple()
总是返回false
)。在日期时间属性上调用setMultiple(true)
会抛出异常。
标识符属性
标识符属性包含一个标识符,通常是主要对象标识符(唯一索引键)。
标识符值可以通过多种模式生成。
auto-increment
是默认模式。它使用存储引擎(mysql)的自动增长特性来保持自动增长的整数索引。uniqid
通过PHP的uniqid()
函数创建一个13个字符的字符串。uuid
创建一个36个字符的字符串(一个RFC-4122 v4通用唯一标识符,uuidv4
)。
标识符属性选项
标识符属性向基本属性选项添加以下概念
⚠标识符属性不能是多个。(
multiple()
总是返回false)。在id
属性上调用setMultiple(true)
将抛出异常。
标识符属性自定义保存
在save($val)
时,如果其模式是uniqid
或uuid
,则标识符属性会自动生成ID。
注意:
auto-increment
模式在保存时不会执行任何操作;它依赖于存储引擎/驱动程序来实现自动增长。
IP属性
IP属性包含一个IP地址。目前只支持IPv4地址。
IP有两种不同的存储模式
string
是默认模式。它将IP地址存储为192.168.1.1
。int
将IP存储为有符号长整数。
⚠IP属性不能是多个。(
multiple()
总是返回false)。在ip
属性上调用setMultiple(true)
将抛出异常。
文件属性
文件属性包含一个可上传的文件。
值
注意,数据库中应只存储相对1文件路径。
1相对于项目的ROOT
加上属性的upload_path
。
文件属性选项
文件属性向基本属性选项添加以下概念
备注
- [†] 表示用于验证的选项。
附加文件方法
mimetype()
和setMimetype()
filesize()
和setFilesize()
dataUpload()
fileUpload()
文件属性自定义保存
在save($val)
时,如果需要,文件属性会尝试上传文件或从数据创建文件。返回上传文件的路径(相对)。
专业文件属性
音频文件属性
音频属性是专门的文件属性,可能只包含音频数据。
接受的MIME类型
由于AudioProperty
扩展了FileProperty
,因此提供了“接受的MIME类型”。
默认接受的MIME类型是
audio/mp3
audio/mpeg
audio/wav
audio/x-wav
.
音频文件属性选项
音频属性向文件属性选项添加以下概念
备注
- [†] 表示用于验证的选项。
图像文件属性
图像属性是专门的文件属性,可能只包含图像数据。
接受的MIME类型
由于ImageProperty
扩展了FileProperty
,因此提供了“接受的MIME类型”。
默认接受的MIME类型是
image/gif
image/jpg
image/jpeg
image/pjpeg
image/png
image/svg+xml
image/webp
图像文件属性选项
音频属性向文件属性选项添加以下概念
备注
- [†] 表示用于验证的选项。
语言属性
语言属性包含一个语言值。
LangProperty
实现了SelectablePropertyInterface
,但将它的choices()
方法硬编码为返回活动语言(来自charcoal/translator)。
数字属性
数字属性包含任何类型的数值数据。
对象属性
对象属性包含对特定类型外部对象的引用。
值
目标对象的标识符
(由其obj-type的key
确定,通常为"id")是存储在值/数据库中的唯一内容。在显示(使用displayVal()
)时,应渲染对象的字符串表示形式。
对象属性选项
对象属性向基本属性选项添加以下概念
备注
- [†] 表示用于验证的选项。
字符串属性
字符串属性选项
字符串属性向基本属性选项添加以下概念
备注
- [†] 表示用于验证的选项。
字符串默认数据
默认情况下,string
属性针对小字符串(最大长度)为255
个字符
专用字符串属性
HTML字符串属性
HTML属性是仅可能包含HTML字符串(而不是纯字符串)的专用字符串属性。
密码字符串属性
密码属性是专用字符串属性,它存储(加密)密码数据。
使用PHP的password_hash
函数进行加密。
密码属性自定义保存
在save($val)
时,密码属性对要存储的密码进行散列(或重新散列),以确保安全(加密)存储。
电话字符串属性
电话属性是专用字符串属性,它存储电话号码。
目前,仅支持“北美”电话号码格式。
文本字符串属性
文本属性是专用字符串属性,通常存储较长的文本字符串。
映射结构属性
映射结构属性存储复杂的映射结构数据,可以是点(标记)、线以及/或多边形。