1. Go to this page and download the library: Download happyr/message-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/ */
happyr / message-serializer example snippets
class Foo {
private $bar;
public function getBar()
{
return $this->bar;
}
public function setBar($bar)
{
$this->bar = $bar;
}
}
$x = new Foo();
$x->setBar('test string');
$output = serialize($x);
echo $output;
use Happyr\MessageSerializer\Transformer\TransformerInterface;
class FooTransformer implements TransformerInterface
{
public function getVersion(): int
{
return 1;
}
public function getIdentifier(): string
{
return 'foo';
}
public function getPayload($message): array
{
return [
'bar' => $message->getBar(),
];
}
public function supportsTransform($message): bool
{
return $message instanceof Foo;
}
}
use Happyr\MessageSerializer\Hydrator\HydratorInterface;
class FooHydrator implements HydratorInterface
{
public function toMessage(array $payload, int $version)
{
$object = new Foo();
$object->setBar($payload['bar']);
return $object;
}
public function supportsHydrate(string $identifier, int $version): bool
{
return $identifier === 'foo' && $version === 1;
}
}
use Happyr\MessageSerializer\Hydrator\HydratorInterface;
class FooHydrator2 implements HydratorInterface
{
public function toMessage(array $payload, int $version)
{
$object = new Foo();
$object->setBar($payload['new_bar']);
return $object;
}
public function supportsHydrate(string $identifier, int $version): bool
{
return $identifier === 'foo' && $version === 2;
}
}
use Happyr\MessageSerializer\Transformer\TransformerInterface;
class FooTransformer implements TransformerInterface
{
public function getVersion(): int
{
return 2;
}
public function getIdentifier(): string
{
return 'foo';
}
public function getPayload($message): array
{
return [
'new_bar' => $message->getBar(),
];
}
public function supportsTransform($message): bool
{
return $message instanceof Foo;
}
}
use Happyr\MessageSerializer\Hydrator\Exception\VersionNotSupportedException;
use Happyr\MessageSerializer\Hydrator\HydratorInterface;
class FooHydrator2 implements HydratorInterface
{
// ...
public function supportsHydrate(string $identifier, int $version): bool
{
if ('foo' !== $identifier) {
return false;
}
if (2 === $version) {
return true;
}
// We do support the message, but not the version
throw new VersionNotSupportedException();
}
}
use Happyr\MessageSerializer\SerializerRouter;
$serializerRouter = new SerializerRouter($happyrSerializer, $symfonySerializer);
use Happyr\MessageSerializer\Transformer\TransformerInterface;
class FooTransformer implements TransformerInterface
{
// ...
public function getPayload($message): array
{
if ($message instanceof Envelope) {
$message = $message->getMessage();
}
return [
'bar' => $message->getBar(),
];
}
public function supportsTransform($message): bool
{
if ($message instanceof Envelope) {
$message = $message->getMessage();
}
return $message instanceof Foo;
}
}
use Happyr\MessageSerializer\Hydrator\HydratorInterface;
use Happyr\MessageSerializer\Transformer\TransformerInterface;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\UuidInterface;
use Symfony\Component\Messenger\Envelope;
class CreateUser implements HydratorInterface, TransformerInterface
{
private $uuid;
private $username;
/** Constructor must be public and empty. */
public function __construct() {}
public static function create(UuidInterface $uuid, string $username): self
{
$message = new self();
$message->uuid = $uuid;
$message->username = $username;
return $message;
}
public function getUuid(): UuidInterface
{
return $this->uuid;
}
public function getUsername(): string
{
return $this->username;
}
public function toMessage(array $payload, int $version): self
{
return self::create(Uuid::fromString($payload['id']), $payload['username']);
}
public function supportsHydrate(string $identifier, int $version): bool
{
return $identifier === 'create-user' && $version === 1;
}
public function getVersion(): int
{
return 1;
}
public function getIdentifier(): string
{
return 'create-user';
}
public function getPayload($message): array
{
if ($message instanceof Envelope) {
$message = $message->getMessage();
}
return [
'id' => $message->getUuid()->toString(),
'username' => $message->getUsername(),
];
}
public function supportsTransform($message): bool
{
if ($message instanceof Envelope) {
$message = $message->getMessage();
}
return $message instanceof self;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.