enm / transformer-bundle
此包可用于将数组、对象或JSON字符串转换为所需的数组、对象或JSON字符串,并验证值和模式与配置数组。
Requires
- php: >=5.4
- enm/transformer: 0.*
- symfony/config: ^2.2|^3.0
- symfony/dependency-injection: 2.2|^3.0
- symfony/http-kernel: ^2.2|^3.0
Requires (Dev)
- phpunit/phpunit: ^4.0|^5.0
README
此包不再维护!
Enm / TransformerBundle 
此包可用作什么?
此包用于将 Enm/Transformer 库集成到 Symfony2 环境。
此库可用于验证数组、对象或JSON字符串,并返回包含验证值的数组、对象或JSON字符串。
这对于REST-API很有用。您可以输入JSON字符串并输出,而转换器可以确保所有值都是有效的。
基本用法
转换器可通过symfony服务访问。
enm.transformer
对于自动完成,可以使用 "TransformerInterface" 进行类型化
__construct(\Enm\TransformerBundle\Interfaces\TransformerInterface $transformer){
$this->transformer = $transformer;
}
该接口将提供不同的方法给您
-
transform($returnClass, $config, $values, $local_config = null, $result_type = 'object') : array | object | string
-
reverseTransform($object, $config, $local_config = null, $result_type = 'object') : array | \stdClass | string
-
getEmptyObjectStructureFromConfig($config, $result_type = 'object') : array | object | string
-
convert($value, $to) : array | object | string
方法:transform()
此方法将验证给定值并从正确的值构建结果(包括属性重命名、值归一化和值转换,如果配置了的话)。
参数
-
returnClass : 返回对象的object或类名(带命名空间)
-
config : 验证和构建输出的配置数组
-
values : 要验证的对象或数组或JSON字符串
-
local_config : 来自全局配置或配置数组或配置对象或配置JSON的配置名称或配置
-
result_type : 此方法应返回的类型字符串("array" 或 "object" 或 "json")
结果
- 对象或数组或JSON
方法:reverseTransform()
此方法返回对象的原始结构(转换之前的原始命名)中的值,但以所选格式(对象、数组或JSON)
参数
-
对象 : 对象、数组或JSON
-
config : 配置数组
-
local_config : 来自全局配置或配置数组或配置对象或配置JSON的配置名称或配置
-
result_type : 此方法应返回的类型字符串("array" 或 "object" 或 "json")
结果
- 对象或数组或JSON
方法:getEmptyObjectStructureFromConfig()
此方法将根据您的配置数组构建所需对象的架构。
参数
-
config : 配置数组
-
result_type : 此方法应返回的类型字符串("array" 或 "object" 或 "json")
结果
- 对象或数组或JSON
方法:convert()
此值将对象、数组或JSON字符串转换为标准对象、数组或JSON字符串。
参数
-
value : 数组或对象或JSON
-
to : 返回值的类型字符串("array" 或 "object" 或 "json")
结果
- 对象或数组或JSON
验证
对于验证,您可以使用配置数组,该数组必须提供给transform或reverseTransform方法。
该配置数组包含所有类型验证的一些参数和一些特殊类型验证参数。
一些参数是必需的,一些是可选的。
基本配置如下所示
$config = array(
'key' => array(
'type' => '', // required
'renameTo' => '', // optional
'children' => array(), // only in use with types "object", "collection" and (if you want it) "individual"
'options' => array() // optional
)
)
type
这是唯一始终必需的选项。
使用此选项,您必须向转换器提供验证数据的类型。
可能值
- 字符串
- 整数
- 浮点数
- 布尔值
- 数组
- 对象
- 集合 // 相等对象的数组
- 日期
- 个体 // 可以是任何类型。默认不执行验证,但您可以添加自己的验证(见后文)
renameTo
此选项是可选的,但如果使用,则需要提供字符串。
此选项可用于将键重命名为不同的属性名。
children
此选项仅在类型为对象、集合或个体时才可能。如果类型是对象或集合,则此选项是必需的。
此选项需要子元素(对象和集合验证)的完整配置数组。
默认选项
适用于所有类型,始终可选
$config['key']['options'] => array(
'required' => true,
'requiredIfAvailable' => array(
'and' => array(),
'or' => array()
),
'requiredIfNotAvailable' => array(
'and' => array(),
'or' => array()
),
'forbiddenIfAvailable' => array(),
'forbiddenIfNotAvailable' => array()
)
required
此选项需要true或false。默认值为false。
如果设置为true,则此选项要求转换器验证当前值不是NULL。
requiredIfAvailable
此选项必须是数组,如果设置,则需要子配置。
通常,此选项告诉转换器设置当前值必需。
子配置
array(
'and' => array(),
'or' => array()
)
- and: 这里提供的所有键都必须可用以设置当前值必需
- or: 这里提供的键中必须有一个可用以设置当前值必需
requiredIfNotAvailable
此选项必须是数组,如果设置,则需要子配置。
通常,此选项告诉转换器设置当前值必需。
子配置
array(
'and' => array(),
'or' => array()
)
- and: 这里提供的所有键都必须不可用以设置当前值必需
- or: 这里提供的键中必须有一个不可用以设置当前值必需
forbiddenIfAvailable
此选项需要配置键名数组。
它要求转换器验证如果给定的键之一有值,则当前键将没有值或值等于NULL。
forbiddenIfNotAvailable
此选项需要配置键名数组。
它要求转换器验证如果给定的键之一没有值,则当前键将没有值或值等于NULL。
字符串验证
基本配置
$config = array(
'key' => array(
'type' => 'string',
)
)
可能选项,全部为可选
$config['key']['options'] = array(
'stringValidation' => '' // email|url|ip
)