lookyman / json-mapper
此包已被废弃,不再维护。未建议替代包。
基于 PHPStan 的严格 JSON 到对象的保湿器。
0.0.6
2022-01-03 10:13 UTC
Requires
- php: ^8.0
- phpstan/phpstan: ^1.3
Requires (Dev)
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-strict-rules: ^1.1
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
README
基于 PHPStan 的严格 JSON 到对象的保湿器。
用法
use Lookyman\JsonMapper\MapperBuilder use PHPUnit\Framework\Assert; class Foo { public function __construct(public string $foo) { } } class Bar { public function __construct(public Foo $first) { } } $result = (new MapperBuilder()) ->build() ->map(Bar::class, '{"first":{"foo":"wtf"}}'); Assert::assertEquals( new Bar(new Foo('wtf')), $result, );
如果参数在源中不存在,但有标量默认值,则将其分配该值。如果参数在源中不存在,但可为空,则分配一个 NULL
值。如果源中包含参数名称中不存在的键,则忽略这些键。否则,我们不进行任何猜测或类型转换。
在出现任何错误的情况下,将抛出 Lookyman\JsonMapper\Exception\MapperException
。
支持类型
- 标量(包括字面量和整数范围),
- 数组(包括关联数组和形状),
- 可迭代对象,
class-string
(包括泛型),对象
,- 普通类对象(包括泛型),
- 联合(包括可为空的参数),
- 受支持的枚举。
有关示例,请参阅 PHPStan 文档 和 tests
目录。
注意事项
所有类都必须可以通过公共构造函数实例化。如果您的类型包含接口或抽象类,请使用 MapperBuilder::withClassMapping
提供到具体类的映射。
有问题吗?
这是我2021年底假期中玩的一个小项目,因为我看到 @Ocramius 几周前在寻找一个类似的库。目前,我对它没有野心,我只是想看看这种方法是否可行。
它可能包含很多错误。
如果您有任何问题,答案可能是“我不知道”。如果您有任何请求,我可能不会回应。
但我保留随时改变主意的权利。