unicon/yaml

使用给定的类验证YAML文件,如果匹配则创建对象。理解PhpDoc,如有必要转换值。递归工作,因此YAML文件可能有复杂结构,给定的类可能具有其他类的属性。

1.0.0 2024-01-10 08:55 UTC

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_parameterboolean_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>属性的类)。