rafrsr/lib-array2object

数组转对象转换库

v1.0.9 2021-01-31 18:58 UTC

This package is auto-updated.

Last update: 2024-08-29 04:14:35 UTC


README

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version Total Downloads License

SensioLabsInsight

数组转对象转换库。使用简单通用的属性注释将数组转换为对象

安装

  1. 安装composer
  2. 执行: composer require rafrsr/lib-array2object

使用方法

只需要带有常用注释的类

<?php

class Player
{
    /** @var string */
    protected $name;

   /** @var integer */
    protected $number;

   //setters and getters here
}

使用方法

$phpArray = ['name' => 'David', 'number' => '1'];
$object = Array2ObjectBuilder::create()->build()->createObject(Player::class, $phpArray);
echo $object->getName();//David
echo $object->getNumber();//1

$array = Object2ArrayBuilder::create()->build()->createArray($object);
echo $array['name'];//David
echo $array['number'];//1

序列化

此库可用于在不进行复杂配置的情况下序列化和反序列化对象。

JSON
//deserialize
$json = '{"name":"David","number"=>"1"}';
$object = Array2ObjectBuilder::create()->build()->createObject(Team::class, json_decode($json, true));
echo $object->getName()//David

//serialize
$array = Object2ArrayBuilder::create()->build()->createArray($object);
echo json_encode($array); // {"name":"David","number"=>"1"}
XML

使用rafrsr/lib-array2xml库来转换XML非常有用

//deserialize
$xml = '<Player><name>Player 1</name><number>1</number></Player>';
$object = Array2ObjectBuilder::create()->build()->create(Team::class, XML2Array::createArray($xml));
echo $object->getName()//David

//serialize
$array = Object2ArrayBuilder::create()->build()->createArray($object);
echo Array2XML::createXml('Player', $array); //  '<Player><name>Player 1</name><number>1</number></Player>'

此库易于使用且具有一些高级配置,但在某些情况下(需要分组、版本和其他内容)则需要使用类似jms/serializer的高级库

文档

完整文档可在wiki页面上找到

版权

此项目采用MIT许可协议