27 lines
653 B
PHP
27 lines
653 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Diffhead\PHP\LaravelRabbitMQ\Service;
|
|
|
|
use Diffhead\PHP\LaravelRabbitMQ\Interface\Serializer as SerializerInterface;
|
|
use InvalidArgumentException;
|
|
use JsonSerializable;
|
|
use PhpAmqpLib\Message\AMQPMessage;
|
|
|
|
class Serializer implements SerializerInterface
|
|
{
|
|
public function serialize(object $event): AMQPMessage
|
|
{
|
|
if ($event instanceof JsonSerializable) {
|
|
return new AMQPMessage(
|
|
json_encode($event->jsonSerialize())
|
|
);
|
|
}
|
|
|
|
throw new InvalidArgumentException(
|
|
'Event should be an instance of JsonSerializable'
|
|
);
|
|
}
|
|
}
|