Serialize any object into array and bind any data structure to an object/array; Can (de)serialize into JSON or XML.
MIT License
Serialize any object into array and format it JSON, YAML or XML
Just use the Serializer class with any kind of object, stdClass or array;
<?php
$result = \ByJG\Serializer\SerializerObject::instance($data)->serialize();
$result2 = \ByJG\Serializer\SerializerObject::instance($anyJsonString)->fromJson()->serialize();
$result3 = \ByJG\Serializer\SerializerObject::instance($anyYamlString)->fromYaml()->serialize();
In the examples above $result
, $result2
and $result3
will be an associative array.
<?php
$data = [ ... any array content ... ]
echo (new JsonFormatter())->process($data);
echo (new XmlFormatter())->process($data);
echo (new YamlFormatter())->process($data);
echo (new PlainTextFormatter())->process($data);
withDoNotSerializeNull()
The SerializerObject brings all properties by default. For example:
<?php
$myclass->setName('Joao');
$myclass->setAge(null);
$serializer = new \ByJG\Serializer\SerializerObject($myclass);
$result = $serializer->serialize();
print_r($result);
// Will return:
// Array
// (
// [name] => Joao
// [age] =>
// )
But you can setup for ignore the null elements:
<?php
$result = \ByJG\Serializer\SerializerObject::instance($myclass)
->withDoNotSerializeNull()
->serialize();
print_r($result);
// And the result will be:
// Array
// (
// [name] => Joao
// )
withDoNotParse([object])
Sometimes we want to serialize the object but ignore some class types.
Setting this option below the whole classes defined in the setDoNotParse will be ignored and not parsed:
<?php
$result = \ByJG\Serializer\SerializerObject::instance($myclass)
->withDoNotParse([
MyClass::class
])
->serialize();
Add to the object the method bind
that allows set contents from another object
<?php
// Create the class
class MyClass extends BindableObject
{}
// Bind any data into the properties of myclass
$myclass->bindFrom($data);
// You can convert to array all properties
$myclass->bindTo($otherobject);
// Set all properties from $source that matches with the property in $target
BinderObject::bind($source, $target);
// Convert all properties of any object into array
SerializerObject::serialize($source);
class Source
{
public $idModel;
public $clientName;
public $age;
}
class Target
{
public $id_model;
public $client_name;
public $age;
}
$source = new Source();
$source->idModel = 1;
$source->clientName = 'John';
$source->age = 30;
BinderObject::bind($source, $target, new CamelToSnakeCase());
class Source
{
public $id_model;
public $client_name;
public $age;
}
class Target
{
public $idModel;
public $clientName;
public $age;
}
$source = new Source();
$source->id_model = 1;
$source->client_name = 'John';
$source->age = 30;
BinderObject::bind($source, $target, new SnakeToCamelCase());
composer require "byjg/serialize"
vendor/bin/phpunit
flowchart TD
byjg/serializer --> ext-json
byjg/serializer --> symfony/yaml