diskerror / typed
PHP类用于严格定义成员结构,控制数据类型,并添加便利方法。
Requires
- php: >=7.4
- ext-intl: *
- ext-json: *
Requires (Dev)
- phpdocumentor/phpdocumentor: ~3.1.2
- phpunit/phpunit: ~9.5
Suggests
- laminas/laminas-json: ~3.1.*
This package is auto-updated.
Last update: 2024-09-03 23:24:40 UTC
README
PHP8(>=8.1)更新。
这允许PHP对象严格定义成员结构,控制其数据类型,并添加便利方法。主分支被认为是持续开发的,目前仅支持PHP版本8.1及以上,现在处理严格的类型检查,并允许将具有类类型的属性设置为null。
具有公共可见性的对象属性将仅使用内置的PHP类型检查。将可见性设置为受保护的或私有的将强制通过Diskerror\Typed机制设置值。此机制静默地忽略不良或不映射的属性名称,并将输入数据静默地强制转换为属性数据类型表示的最佳形式。将错误的数据类型分配给公共属性将抛出异常。
TypedAbstract
抽象方法
assign
子类将按名称复制所有匹配的成员,同时保持原始类型,并在适当的情况下进行深度复制。此方法将静默地忽略输入对象中的额外属性,并将跳过以下划线开头(按照Zend Framework编码风格)的名称。EXCEPT:允许使用 "_id" 属性名与MongoDB一起使用。
输入可以是一个对象或数组、null或false。null或false将把TypedAbstract对象设置为零或空值。
merge
此方法与上面的assign类似,但它首先克隆当前对象,然后替换匹配的值,并返回新的TypedAbstract对象。
实现的方法
clear
将所有成员设置为null、zero或empty。对象也将将其成员设置为null、zero或empty。
toArray
返回一个关联数组,其中只包含此对象的适当成员,根据toArrayOptions设置。还会执行从对象到关联数组的深度复制/转换。
jsonSerialize
当在对象上调用json_encode时,此方法将返回一个数组。这将具有省略空值和保持表达式的选项。
_setBasicTypeAndConfirm
此静态方法引用输入值并将其强制转换为请求的基本类型。
TypedClass
TypedClass的衍生类需要执行以下操作
- 成员/属性访问将类似于任何标准PHP对象,即使当可见性设置为"protected"或"private"时。
- 维护每个成员/属性的初始类型。
- 当输入成员的assign或merge类型与相应的本地属性不同时,将静默地将数据转换为非公共属性的最明显形式。
- 识别从AtomicInterface继承的类,以管理它们的内部值。
- 处理对象成员/属性的特例,这些对象具有处理NULL赋值的选项。
- 实现“toArray”以返回深度转换的标准关联数组。
- 适当处理传递给serialize和json_encode。
- 接受另一个对象、关联数组或索引数组,并将输入值分配给适当的成员。
- 逐项复制每个字段或属性项。
- 按位置复制索引数组。
- 将备用名称映射到正确名称。
- 将单个属性或整个对象的成员重置为其initValue值。
用户类的属性必须声明为“protected”或“private”,这样才能使此合约生效。属性的名称必须遵循命名规范,即预期的“public”成员不应以下划线开头。这借鉴了Zend框架中受保护属性和私有属性名称以下划线开头的命名约定。
如果一个非公共属性没有类型,则假定它接受任何类型和null值。如果一个属性没有类型,但已分配了一个初始值,则假定该类型与初始值相同。
更复杂的示例可以在“tests”目录中找到。
TypedArray
TypedArray的实例或派生类必须承诺执行以下操作
- 表现得像一个标准的PHP关联数组。
- 确保每个成员具有相同的数据类型。
- 以最明显的方式静默地转换分配的数据。
- 实现“toArray”以返回一个深度转换的PHP关联数组。
- 适当地处理serialize和json_encode函数。
DateTime和Date
这些类向内置PHP DateTime类添加了便利方法。这包括__toString方法,该方法返回一个日期时间字符串,格式化为initValue MySQL日期时间格式。
SqlStatement
实用类,根据输入数据输出格式化的部分SQL字符串。两者都接受一个输入数组,以及一个数组,其中值是第一个数组中要包含的成员名称。空数组表示使用所有成员。
toInsert
返回一个格式化的字符串,用于SQL INSERT或UPDATE语句。接受一个数组,其中值是要包含的成员名称。空数组表示使用所有成员。
toValues
返回一个格式化的字符串,用于SQL "ON DUPLICATE KEY UPDATE"语句。
Composer
> composer require diskerror/typed