encjacom / serializer
此包最新版本(v2.0.2)没有可用的许可信息。
v2.0.2
2020-12-01 12:11 UTC
README
目录
主要特性
- 递归处理最多50层嵌套对象/数组
- 处理 \DateTime 对象
- 实现Java风格的命名约定。
安装
将Serializer添加到您的composer.json文件中。
{
"require": {
"encjacom/serializer": "~1.2"
}
}
或者在终端上简单执行
composer require encjacom/serializer
然后在您的PHP脚本顶部引入自动加载器
require 'vendor/autoload.php';
快速开始
Php Serializer 允许您在以下之间切换
对象 --- 数组 --- json, xml
<?php
use iPresso\Component\Serializer\Serializer;
require_once '../vendor/autoload.php';
$serializer = new Serializer();
class Car
{
private $model = 'SomeModel';
private $color = 'red';
/**
* @var Part[]
*/
private $parts;
public function setParts($parts)
{
$this->parts = $parts;
}
}
class Part
{
private $number = 123;
private $name = 'engine';
}
$car = new Car();
$car->setParts([new Part(), new Part(), new Part()]);
$array = $serializer->normalize($car);
$json = json_encode($array);
并且也可以在反向方向上
json --- 数组 --- 对象
<?php
$json = <<<JSON
{
"model":"MyModel",
"color":"red",
"parts":[
{
"number":123,
"name":"engine"
},
{
"number":124,
"name":"lamp"
},
{
"number":125,
"name":"wheel"
}
]
}
JSON;
//$array = json_decode($json, true);
$array = [
'model' => 'MyModel',
'color' => 'red',
'parts' => [
0 => [
'number' => 123,
'name' => 'engine'
],
1 => [
'number' => 124,
'name' => 'lamp'
],
2 => [
'number' => 125,
'name' => 'wheel'
],
]
];
$car = $serializer->denormalize($array, Car::class);