era269 / normalizable
面向对象归一化
v0.6.0
2022-03-09 19:22 UTC
Requires
- php: ^8.0|^7.1
Requires (Dev)
- phpstan/phpstan: ^0.12.88
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-20 15:57:26 UTC
README
对象控制下的归一化。
- 所有私有对象属性应准备好进行归一化。通过在
NormalizationFacade
中添加或更改归一化器的顺序,可以轻松地自定义归一化过程。 - 为了允许归一化自定义,对象必须实现以下接口
NormalizableInterface
NormalizationFacadeInterface
描述
NormalizableInterface
基本接口。可以单独使用来构建完全手动的归一化。如何
- 任何对象实现
NormalizableInterface
- 在
NormalizableInterface::normalize
中的对象::normalize 被调用,对于所有需要在归一化视图中存在的对象
NormalizableTrait
如果需要所有归一化自动发生,则必须将 NormalizableTrait
与 NormalizableInterface
一起使用。在这种情况下,所有对象都应该由 DefaultNormalizationFacade
支持。
DefaultNormalizationFacade
将根据以下规则归一化所有私有对象属性
AsIsKeyDecorator
属性名将成为数组键,没有任何修饰- 所有属性都将通过预定义的归一化器进行处理
NotObjectNormalizer
将返回非对象本身ListNormalizableToNormalizableAdapterNormalizer
将处理可归一化对象的数组- 所有键都将保持不变
AsIsKeyDecorator
- 所有值都将根据当前规则由
DefaultNormalizationFacade
进行处理
- 所有键都将保持不变
NormalizableNormalizer
将调用NormalizableInterface::normalize
WithTypeNormalizableNormalizerDecorator
是对NormalizableNormalizer
的装饰,添加具有归一化对象 ShortClassName 的@type
字段ScalarableNormalizer
将获取实现ScalarableInterface
的对象中的标量值StringableNormalizer
将获取实现StringableInterface
的对象中的标量值- 最后一个是
FailNormalizer
,如果没有找到归一化器,它将抛出异常
NormalizationFacadeAwareInterface
应由所有可归一化对象实现,以支持归一化自定义。归一化应由自定义 NormalizationFacade
实现启动,并将其递归地设置到所有可归一化对象中。