1. Go to this page and download the library: Download blackprism/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/ */
blackprism / serializer example snippets
class City
{
private $name = '';
private $country = null;
public function setName(string $name)
{
$this->name = $name;
}
public function getName(): string
{
return $this->name;
}
public function countryIs(Country $country)
{
$this->country = $country;
}
public function getCountry()
{
return $this->country;
}
}
class Country
{
private $name = '';
public function setName(string $name)
{
$this->name = $name;
}
public function getName(): string
{
return $this->name;
}
}
use Blackprism\Serializer\Configuration;
use Blackprism\Serializer\Value\ClassName;
$configuration = new Configuration();
$configurationObject = new Configuration\Object(new ClassName(City::class));
$configurationObject
->attributeUseMethod('name', 'setName', 'getName')
->attributeUseObject('country', new ClassName(Country::class), 'countryIs', 'getCountry')
->registerToConfiguration($configuration);
$configurationObject = new Configuration\Object(new ClassName(Country::class));
$configurationObject
->attributeUseMethod('name', 'setName', 'getName')
->registerToConfiguration($configuration);
use Blackprism\Serializer\Json;
$country = new Country();
$country->setName('France');
$city = new City();
$city->setName('Palaiseau');
$city->countryIs($country);
$jsonSerializer = new Json\Serialize($configuration);
$citySerialized = $jsonSerializer->serialize($city);
echo $citySerialized;
use Blackprism\Serializer\Json;
$json = '{
"name": "Palaiseau",
"country": {
"name": "France"
}
}';
$jsonDeserializer = new Json\Deserialize($configuration);
$city = $jsonDeserializer->deserialize($json, new ClassName(City::class));
print_r($city);
class City {
private $name =>
string(9) "Palaiseau"
private $country =>
class Country {
private $name =>
string(6) "France"
}
}
$configurationObject
->attributeUseMethod('name', 'setName', 'getName')
->attributeUseHandler(
'country',
new class implements Configuration\Type\HandlerDeserializerInterface {
public function deserialize($object, $value)
{
$country = new Country();
$country->setName($value['name']);
$object->countryIs($country);
$object->setName($object->getName() . ' (' . $country->getName() . ')');
}
},
new class implements Configuration\Type\HandlerSerializerInterface {
public function serialize($object)
{
$country = $object->getCountry();
return ['name' => $country->getName() . '#' . spl_object_hash($country)];
}
}
);
use Blackprism\Serializer\Configuration;
use Blackprism\Serializer\Value\ClassName;
$configuration = new Configuration();
$configuration->identifierAttribute('type'); // name the property which contain the type of document
$configurationObject = new Configuration\Object(new ClassName(City::class));
$configurationObject
->attributeUseMethod('name', 'setName', 'getName')
->attributeUseIdentifiedObject('country', 'countryIs', 'getCountry') // You don't need to tell which class of object is
->registerToConfigurationWithIdentifier($configuration, 'city'); // Register the configuration with an identifier
$configurationObject = new Configuration\Object(new ClassName(Country::class));
$configurationObject
->attributeUseMethod('name', 'setName', 'getName')
->registerToConfigurationWithIdentifier($configuration, 'country'); // Register the configuration with an identifier
use Blackprism\Serializer\Json;
$country = new Country();
$country->setName('France');
$city = new City();
$city->setName('Palaiseau');
$city->countryIs($country);
$jsonSerializer = new Json\Serialize($configuration);
$citySerialized = $jsonSerializer->serialize($city);
echo $citySerialized;