dimaskao / library_for_serializing_objects
此包的最新版本(v3.0.1)没有可用的许可信息。
此库可以将您的PHP对象序列化为JSON、YAML和XML。
v3.0.1
2020-08-14 11:44 UTC
Requires
- php: >=7.4
- ext-json: *
- symfony/yaml: ^5.1
README
此库可以将您的PHP对象序列化为JSON、YAML和XML。
目录
安装
您可以使用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 ...