dimaskao / library_for_serializing_objects
This library can serialize your php objects into JSON, YAML and XML.
Package info
github.com/Dimaskao/Library_for_serializing_objects
pkg:composer/dimaskao/library_for_serializing_objects
Requires
- php: >=7.4
- ext-json: *
- symfony/yaml: ^5.1
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
This library can serialize your php objects into JSON, YAML and XML.
Table of contents
Installation
You can use composer to install this extension.
Just run:
$ composer require dimaskao/library_for_serializing_objects
How to use
General
At first include this library classes:
require_once __DIR__ . '/XXXXX/vendor/autoload.php'; use Dimaskao\Serializer\JSON //|\ use Dimaskao\Serializer\XML //|- Choose what you need use Dimaskao\Serializer\YAML //|/
Where XXXXX path to library root folder.
If you want to serialize an object, you should create a new JSON, _YAML_ or XML object.
$json = new JSON(); $yaml = new YAML(); $xml = new XML();
Then use ->serialize() method and pass an object to it.
This method will return string with serialized object.
$json = new JSON(); $json->serialize($obj);
Field selection
If you do not want to serialize the all object, you can select individual fields.
For this pass array in serialize() with name of field.
$json = new JSON(); $json->serialize($obj, ["value1", "value3"]);
Library extension
If you would add new formats, you should create your own class
which extends AbstractSerializer.php and implements SerializerInterface.php.
require_once __DIR__ . '/vendor/autoload.php'; use Dimaskao\Serializer\AbstractSerializer; use Dimaskao\Serializer\SerializerInterface; class YourFormat extends AbstractSerializer implements SerializerInterface { }
This class must have a serialize() method. Use $this->get_data() to get all fields in an object.
$elemetn_list - optional array with the fields to get. Watch Field selection.
class YourFormat extends AbstractSerializer implements SerializerInterface { public function serialize($obj, $elemetn_list = []){ $public_value = $this->get_data($obj, $elemetn_list); } }
Then you can do whatever you want with $public_value, for example:
return json_encode($public_value)
Example
Let's see how it works using the YAML example.
//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>";
As a result, we get.
--- value: Value value2: Value2.1: first Value2.2: 2 ...