maciej-sz/pj-freeze
Composer 安装命令:
composer require maciej-sz/pj-freeze
包简介
PHP to JSON Serializer/Deserializer
README 文档
README
PHP to JSON Serializer/Deserializer
Features
- Serialization to JSON
- Unserialization from JSON
- Circular-reference handling
- Corresponding JavaScript library is available to read serialized data on the browser side
Usage
This package can be used to serialize and unserialize data objects that contain circular references.
Example: basic round-trip
use MaciejSz\PjFreeze\PjFreeze; $Freeze = new PjFreeze(); $data = ["foo", "bar", "baz"]; $SerializationResult = $Freeze->serialize($data); $serializedObj = $SerializationResult->jsonSerialize(); $unserialized = $Freeze->unserialize($serializedObj); assert($data == $unserialized);
Example: persisting round-trip
An additional step is required for the serialization result to be persisted: PHP's standard json_encode() function has to be called. The json_encode() won't produce "Recursion detected" error this time.
use MaciejSz\PjFreeze\PjFreeze; $Freeze = new PjFreeze(); $data = ["foo", "bar", "baz"]; $serializedObj = $Freeze->serialize($data)->jsonSerialize(); $serialized_str = json_encode($serializedObj); file_put_contents("/tmp/data.json", $serialized_str); // ... $contents_str = file_get_contents("/tmp/data.json"); $unserialized = $Freeze->unserializeJson($contents_str); assert($data == $unserialized);
Example: circular reference
Using only json_encode():
// WARNING: this is an example of how NOT to encode circular references use MaciejSz\PjFreeze\PjFreeze; $data = new \stdClass(); $data->recursion = $data; // circular reference $raw_encoded = json_encode($data); echo json_last_error_msg(); // "Recursion detected"
Using PjFreeze:
use MaciejSz\PjFreeze\PjFreeze; $data = new \stdClass(); $data->recursion = $data; // circular reference $Freeze = new PjFreeze(); $serializedObj = $Freeze->serialize($data)->jsonSerialize(); $jp_freeze_encoded = json_encode($serializedObj); echo json_last_error_msg(); // "No error" $unserializedObj = json_decode($jp_freeze_encoded); $unserialized = $Freeze->unserialize($unserializedObj); assert($unserialized->recursion === $unserialized);
Installation
Via composer:
composer require maciej-sz/pj-freeze
统计信息
- 总下载量: 1.23k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-08-23