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);