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);
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
// )
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