cuiz / valinor
库,帮助将任何输入映射到强类型值对象结构。
1.13.0
2024-09-02 12:57 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- composer-runtime-api: ^2.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- infection/infection: ^0.27
- marcocesarato/php-conventional-changelog: ^1.12
- mikey179/vfsstream: ^1.6.10
- phpstan/phpstan: ^1.3
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^10.5
- rector/rector: ^1.0
- vimeo/psalm: ^5.0
- dev-master
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.0
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
- 0.17.x-dev
- 0.17.1
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.0
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.1
- 0.1.0
- dev-fix/properly-handle-class-sharing-class-name-and-namespace-group-name
- dev-renovate/configure
This package is auto-updated.
Last update: 2024-09-18 19:51:13 UTC
README
— 从无聊的旧数组到闪亮的类型化对象 —Valinor 负责原始输入(JSON、纯数组等)到对象的构建和验证,确保状态完全有效。它允许在整个应用程序生命周期中无需担心对象的整体性。
验证系统将检测任何错误的值,并通过提供精确且易于阅读的错误消息来帮助开发者。
映射器可以处理原生 PHP 类型,以及由 PHPStan 和 Psalm 支持的其他高级类型,如形状数组、泛型、整数范围等。
该库还提供了一种规范化机制,可以将任何输入转换成数据格式(JSON、CSV 等),同时保留原始结构。
安装
composer require cuyz/valinor
📔 更多信息请参阅 在线文档
示例
final class Country { public function __construct( /** @var non-empty-string */ public readonly string $name, /** @var list<City> */ public readonly array $cities, ) {} } final class City { public function __construct( /** @var non-empty-string */ public readonly string $name, public readonly DateTimeZone $timeZone, ) {} } $json = <<<JSON { "name": "France", "cities": [ {"name": "Paris", "timeZone": "Europe/Paris"}, {"name": "Lyon", "timeZone": "Europe/Paris"} ] } JSON; try { $country = (new \CuyZ\Valinor\MapperBuilder()) ->mapper() ->map(Country::class, \CuyZ\Valinor\Mapper\Source\Source::json($json)); echo $country->name; // France echo $country->cities[0]->name; // Paris } catch (\CuyZ\Valinor\Mapper\MappingError $error) { // Handle the error… }
文档
完整文档可在 valinor.cuyz.io 上找到。
致谢 & 感谢
这个库的开发主要是由许多人的友好话语和帮助激发的。我非常感谢每一个人,特别是这个存储库的直接贡献者,他们直接帮助推动项目向前发展。
我还想感谢 Blackfire 为提供他们出色的工具提供许可证,这在使用这个库时带来了显著的性能提升。