prgtw / big-number-serializer-bundle
使用 JmsSerializer 将 BigNumber 类序列化和反序列化为字符串表示的包
1.1.0
2021-04-06 22:38 UTC
Requires
- php: ^7.4 || ^8.0
- brick/math: ^0.9.2
- jms/serializer: ^1 || ^3
- jms/serializer-bundle: ^1 || ^2 || ^3
- symfony/config: ^2 || ^3 || ^4
- symfony/dependency-injection: ^2 || ^3 || ^4
- symfony/http-kernel: ^2 || ^3 || ^4
Requires (Dev)
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
README
使用 BigNumber 将类序列化和反序列化为 string
表示的包,使用 JmsSerializer.
安装
-
在您的
composer.json
中要求prgtw/big-number-serializer-bundle
包并更新您的依赖项。composer require prgtw/big-number-serializer-bundle
-
将
BigNumberSerializerBundle
添加到您的应用程序内核中public function registerBundles() { $bundles = [ // ... new prgTW\BigNumberSerializerBundle(), // ... ]; // ... }
示例
/** * @Serializer\ExclusionPolicy("NONE") */ class Temp { /** * @Serializer\SerializedName("integer") * @Serializer\Type("Brick\Math\BigInteger") */ private BigInteger $integer; /** * @Serializer\SerializedName("decimal") * @Serializer\Type("Brick\Math\BigDecimal<'2'>") */ private BigDecimal $decimal; /** * @Serializer\SerializedName("rational") * @Serializer\Type("Brick\Math\BigRational") */ private BigRational $rational; public function __construct(BigInteger $integer, BigDecimal $decimal, BigRational $rational) { $this->integer = $integer; $this->decimal = $decimal; $this->rational = $rational; } public function getInteger(): BigInteger { return $this->integer; } public function getDecimal(): BigDecimal { return $this->decimal; } public function getRational(): BigRational { return $this->rational; } } // ---------------------------------------- $temp = new Temp( BigInteger::of('12345'), BigDecimal::of('123.4'), // scaled to 2 decimal places BigRational::of('4/7') ); echo $jmsSerializer->serialize($temp, 'json');
结果
之前(没有包)
{ "integer": {"value": "12345"}, "decimal": {"value": "12340", "scale": 2}, "rational": {"numerator": {"value":"4"}, "denominator": {"value":"7"}} }
之后(使用包)
{ "integer": "12345", "decimal": "123.40", "rational": "4\/7" }