andreiavrammsd / serializer
此包已被废弃,不再维护。未建议替代包。
JSON字符串转对象。对象/数组转JSON。
v1.0.0
2019-12-28 12:02 UTC
Requires
- php: >=7.1
- ext-json: *
Requires (Dev)
- overtrue/phplint: ^1.1
- phpmd/phpmd: ^2.8
- phpstan/phpstan: ^0.11
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-02-29 03:43:44 UTC
README
非常基本的序列化/反序列化/toarray。还可以通过类型和/或回调转换数据。
目前只处理JSON。
安装
composer require andreiavrammsd/serializer
用法
$input = '{...}'; $class = ObjectClass::class; $serializer = Serializer\SerializerBuilder::instance()->build(); // OR $serializer = Serializer\Factory::create(); $object = $serializer->unserialize($input, $class); $serializer->serialize($object); $serializer->toArray($object);
属性注解(所有注解都是可选的)
- 属性:输入中键的名称。如果未设置,则使用变量名称。
- 类型:如果设置,则值将按以下方式转换
- int, float, string, bool, array:将值转换为类型。
- collection:值将被包装在一个可计数的迭代器,具有数组访问功能中。
- DateTime:创建一个DateTime对象,通过给定的格式格式化值;使用第一个有效的格式。
- 完全限定类名:值将被解析到给定的类。
- 类数组:值将被解析到一个数组中,每个元素都解析为给定的类。
- 类集合:值将被解析到一个集合中,每个元素都解析为给定的类。
- 回调:接受可调用的(函数或类方法)(带可选参数)。值将被传递给可调用的(带有可选参数,如果设置了),新的值将是可调用的结果。
示例
@Serializer\Property("first_name")
@Serializer\Type("int")
@Serializer\Type("float")
@Serializer\Type("string")
@Serializer\Type("bool")
@Serializer\Type("array")
@Serializer\Type("collection")
@Serializer\Type("DateTime","Y-m-d H:i", "Y-m-d")
@Serializer\Type("Entity\User")
@Serializer\Type("array[Entity\User]")
@Serializer\Type("collection[Entity\User]")
@Serializer\Callback("strtoupper")
@Serializer\Callback("substr", "0", "3")
@Serializer\Callback("[User\NameFormatter, firstName]")
@Serializer\Callback("[User\NameFormatter, lastName]", "1", "3")
@Serializer\IgnoreNull() // Ignores null values when serializing or converting to array.
对象类注解
- 集合:一个使用Collection注解并扩展了Collection类的类将是一个具有指定类类型项的集合类。
示例
@Serializer\Collection("Entity\User")
开发
- 要求:Docker, Make
- 构建和安装开发容器
make build PHPVERSION=7.4make install PHPVERSION=7.4
- 运行QA工具:
make PHPVERSION=7.4 - 在开发容器内工作:
make run PHPVERSION=7.4然后make localqa - 删除Docker镜像:
make clean PHPVERSION=7.4
使用PhpStorm开发