1. Go to this page and download the library: Download earc/serializer library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
earc / serializer example snippets
use eArc\DI\DI;
DI::init();
use eArc\Serializer\Api\Serializer;
$serializedValue = di_get(Serializer::class)->serialize($value);
$deserializedValue = di_get(Serializer::class)->deserialize($serializedValue);
use eArc\Serializer\Api\Serializer;
class X {
/** @var Y */
protected $referenceToY;
public function __construct()
{
$this->referenceToY = new Y($this);
}
}
class Y {
/** @var X */
protected $referenceToX;
public function __construct(X $x)
{
$this->referenceToX = $x;
}
}
$serializedValue = di_get(Serializer::class)->serialize(new X());
echo $serializedValue;
use eArc\Serializer\Api\Serializer;
class Z1 {}
class Z2 {
public $z1;
}
$classZ1 = new Z1();
$classZ2 = new Z2();
$classZ2->z1 = $classZ1;
$serializedValue = di_get(Serializer::class)->serialize([0 => $classZ1, 1 => $classZ2]);
use eArc\Serializer\SerializerTypes\SerializerDefaultType;
class MySerializerType extends SerializerDefaultType
{
public function filterProperty(string $fQCN, string $propertyName): bool
{
static $blacklistProperties = [
MyClass::class => [
'myPropertyOne' => true,
'anotherNotSerializedProperty' => true,
],
];
return !array_key_exists($fQCN, $blacklistProperties)
&& !array_key_exists($propertyName, $blacklistProperties[$fQCN]);
}
}
use eArc\Serializer\DataTypes\Interfaces\DataTypeInterface;
class MyDataType implements DataTypeInterface
{
public function isResponsibleForSerialization(?object $object, $propertyName, $propertyValue): bool
{
return is_subclass_of($propertyValue, MyObjectsClassOrInterface::class);
}
public function serialize(?object $object, $propertyName, $propertyValue)
{
return [
'type' => MyObjectsClassOrInterface::class,
'value' => 'Put your serialized Information here.',
];
}
public function isResponsibleForDeserialization(?object $object, string $type, $value): bool
{
return $type === MyObjectsClassOrInterface::class;
}
public function deserialize(?object $object, string $type, $value)
{
return 'Here you return your deserialized class instance';
}
}
use eArc\Serializer\SerializerTypes\SerializerDefaultType;
class MySerializerType extends SerializerDefaultType
{
public function getDataTypes(): iterable
{
yield MyDataType::class => null;
foreach (parent::getDataTypes() as $class => $object) {
yield $class => $object;
}
}
}