更新日志 0.7.0 — 2022 年 3 月 24 日¶
重要变更¶
警告此版本引入了更新之前必须考虑的重大重大更改
搭建商注册
自动命名构造函数发现已被禁用。现在必须显式注册映射器可以使用的自定义构造函数。
做出此决定是因为 @Ocramius 报告并在咨询顾问 GHSA-xhr8-mpwq-2rr2中描述的安全问题。
因此,现有代码必须列出映射器之前自动使用的所有命名构造函数,并使用MapperBuilder::registerConstructor()方法注册它们。
MapperBuilder::bind()方法已被弃用,取而代之的是上面的方法。
final class SomeClass
{
public static function namedConstructor(string $foo): self
{
// …
}
}
(new \CuyZ\Valinor\MapperBuilder())
->registerConstructor(
SomeClass::namedConstructor(...),
// …or for PHP < 8.1:
[SomeClass::class, 'namedConstructor'],
)
->mapper()
->map(SomeClass::class, [
// …
]);
请参阅文档以获取更多信息。
源构建器
Source类是非普通数组或可迭代源的新入口点。它允许以方便的方式访问其他功能,例如驼峰式键或自定义路径映射。
应按如下方式使用:
$source = \CuyZ\Valinor\Mapper\Source\Source::json($jsonString)
->camelCaseKeys()
->map([
'towns' => 'cities',
'towns.*.label' => 'name',
]);
$result = (new \CuyZ\Valinor\MapperBuilder())
->mapper()
->map(SomeClass::class, $source);
有关其用法的更多详细信息,请参阅文档。