unicon / yaml
使用给定的类验证YAML文件,如果匹配则创建对象。理解PhpDoc,如有必要转换值。递归工作,因此YAML文件可能有复杂结构,给定的类可能具有其他类的属性。
1.0.0
2024-01-10 08:55 UTC
Requires
- php: >=8.1
- symfony/yaml: >=6.0
- unicon/unicon: 1.0.0
This package is auto-updated.
Last update: 2024-09-11 19:33:29 UTC
README
使用给定的类验证YAML文件,如果匹配则创建对象。理解PhpDoc,如有必要转换值。递归工作,因此YAML文件可能有复杂结构,给定的类可能具有其他类的属性。
安装
composer require unicon/yarn
用法
$reader = new Yaml(MyClass::class); $object = $reader->read('my_yaml.yml');
示例
class Simple { public int $integerParameter = 1; /** @var positive-int */ public int $positiveIntegerParameter; public ?bool $booleanOrNullParameter; public string $stringParameter = 'default'; }
成功示例
integer_parameter: '777' positive_integer_parameter: 666 boolean_or_null_parameter: null string_parameter: 888
失败
如果YAML文件与类不匹配,将抛出YamlException
异常
Yaml参数positive_integer_parameter必须大于或等于1,给出"-1"的值
integer_parameter: '777' positive_integer_parameter: '-1' boolean_or_null_parameter: null string_parameter: 888
无法将integer_parameter 777.777转换为int
integer_parameter: 777.777 positive_integer_parameter: 666 boolean_or_null_parameter: null string_parameter: 888
无法将integer_parameter "xxx"转换为int
integer_parameter: 'xxx' positive_integer_parameter: 666 boolean_or_null_parameter: null string_parameter: 888
缺少Yaml参数positive_integer_parameter
(integer_parameter
和boolean_or_null_parameter
也缺少,但其中一个有默认值,另一个是可空的)
string_parameter: 'aaa'
意外的Yaml参数extra_parameter的值为true
(此异常对于stdClass
或\AllowDynamicProperties
类永远不会抛出)
extra_parameter: true integer_parameter: '777' positive_integer_parameter: 666 boolean_or_null_parameter: null string_parameter: 888
您可以在测试目录中找到更多示例,包括日期、复杂结构和树(具有array<self>
属性的类)。