PHP code example of lukasz93p / object-serializer
1. Go to this page and download the library: Download lukasz93p/object-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/ */
lukasz93p / object-serializer example snippets
namespace Lukasz93P\objectSerializer;
interface SerializableObject
{
/**
* Unique identifier(per class, not per instance) used to identify serialized object class
* Event if You change class name/namespace after object serialization it still can be deserialized properly
**/
public function classIdentificationKey(): string;
}
$serializer = ObjectSerializerFactory::create([]);
$objectSerializedToJson = $serializer->serialize($serializableObjectInstance);
$serializer = ObjectSerializerFactory::create([TestSerializableClass::IDENTIFICATION_KEY => TestSerializableClass::class]);
$testSerializableClassInstace = $serializer->deserialize($serializedTestSerializableClassInstance);
namespace tests;
use JMS\Serializer\Annotation as Serializer;
use Lukasz93P\objectSerializer\ObjectSerializerFactory;
use Lukasz93P\objectSerializer\SerializableObject;
use PHPUnit\Framework\TestCase;
class TestSerializableClass implements SerializableObject
{
public const IDENTIFICATION_KEY = 'test';
/**
* @var string
* @Serializer\SerializedName("testStringField")
* @Serializer\Type("string")
*/
private $testStringField;
/**
* @var int
* @Serializer\SerializedName("testNumericField")
* @Serializer\Type("int")
*/
private $testNumericField;
public function __construct(string $testStringField, int $testNumericField)
{
$this->testStringField = $testStringField;
$this->testNumericField = $testNumericField;
}
public function classIdentificationKey(): string
{
return self::IDENTIFICATION_KEY;
}
public function getTestStringField(): string
{
return $this->testStringField;
}
public function getTestNumericField(): int
{
return $this->testNumericField;
}
}
class ObjectSerializerTest extends TestCase
{
private $objectSerializer;
protected function setUp(): void
{
parent::setUp();
$this->objectSerializer = ObjectSerializerFactory::create([TestSerializableClass::IDENTIFICATION_KEY => TestSerializableClass::class]);
}
public function testShouldSerializeAndDeserializeSerializableObjectInstance(): void
{
$serializableObjectInstance = new TestSerializableClass('test', 1);
$serializedObject = $this->objectSerializer->serialize($serializableObjectInstance);
$deserializedObject = $this->objectSerializer->deserialize($serializedObject);
$this->assertInstanceOf(TestSerializableClass::class, $deserializedObject);
}
public function testShouldSerializeAndDeserializeSerializableObjectInstanceWithClassFieldsRegardlessOfThoseFieldsVisibilityAndWithoutAvailableSetters(
): void
{
$testStringValue = 'testStringValue';
$testNumericValue = 4235;
$serializableObjectInstance = new TestSerializableClass($testStringValue, $testNumericValue);
$serializedObject = $this->objectSerializer->serialize($serializableObjectInstance);
/** @var TestSerializableClass $deserializedObject */
$deserializedObject = $this->objectSerializer->deserialize($serializedObject);
$this->assertEquals($testStringValue, $deserializedObject->getTestStringField());
$this->assertEquals($testNumericValue, $deserializedObject->getTestNumericField());
}
}