dimaskao/library_for_serializing_objects

此包的最新版本(v3.0.1)没有可用的许可信息。

此库可以将您的PHP对象序列化为JSON、YAML和XML。

v3.0.1 2020-08-14 11:44 UTC

This package is auto-updated.

Last update: 2024-09-04 22:27:50 UTC


README

此库可以将您的PHP对象序列化为JSONYAMLXML

目录

安装

您可以使用composer安装此扩展。

只需运行

$ composer require dimaskao/library_for_serializing_objects

如何使用

通用

首先包含此库类

require_once __DIR__ . '/XXXXX/vendor/autoload.php';

use Dimaskao\Serializer\JSON   //|\
use Dimaskao\Serializer\XML    //|- Choose what you need
use Dimaskao\Serializer\YAML   //|/

其中XXXXX是库根目录的路径。

如果您想序列化一个对象,您应该创建一个新的JSON_YAML_XML对象。

$json = new JSON();
$yaml = new YAML();
$xml = new XML();

然后使用->serialize()方法并将一个对象传递给它。此方法将返回序列化对象的字符串。

$json = new JSON();
$json->serialize($obj);

字段选择

如果您不想序列化整个对象,您可以选择单个字段。为此,在serialize()中传递一个包含字段名称的数组。

$json = new JSON();
$json->serialize($obj, ["value1", "value3"]);

库扩展

如果您想添加新格式,您应该创建一个继承自AbstractSerializer.php并实现SerializerInterface.php的自己的类。

require_once __DIR__ . '/vendor/autoload.php';
use Dimaskao\Serializer\AbstractSerializer;
use Dimaskao\Serializer\SerializerInterface;

class YourFormat extends AbstractSerializer implements SerializerInterface {

}

此类必须有一个serialize()方法。使用$this->get_data()获取对象中的所有字段。

$element_list - 可选的包含要获取的字段的数组。查看字段选择

class YourFormat extends AbstractSerializer implements SerializerInterface {
    public function serialize($obj, $elemetn_list = []){
        $public_value = $this->get_data($obj, $elemetn_list);
    }
}

然后您可以用$public_value做任何您想做的事情,例如

return json_encode($public_value)

示例

让我们通过YAML示例看看它是如何工作的。

//Include library
require_once __DIR__ . '/vendor/autoload.php';

use Dimaskao\Serializer\YAML;

//Creating test class
class Test {

    public $value = "Value";
    public $value1 = "Value1";
    private $value2 = ["Value2.1" => "first", "Value2.2" => 2];
    protected $value3;

    function __construct($item) {
        $this->value3 = $item;
    }
}
//Creating test object
$test = new Test("Value3");

//Creating YAML object
$yaml = new YAML();

//Saving serialized object
$serialized_obj = $yaml->serialize($test, ["value", "value2"]);

//Views results
echo "<pre>";
print_r($serialized_obj);
echo "</pre>";

结果,我们得到。

---
value: Value
value2:
  Value2.1: first
  Value2.2: 2
...