use Psr\Container\ContainerInterface;
use Symfony\Component\Messenger\Handler\HandlerDescriptor;
use Symfony\Component\Messenger\Handler\HandlersLocator;
use Symfony\Component\Messenger\MessageBus;
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
return [
'event.bus' => fn(ContainerInterface $container) => new MessageBus([
new HandleMessageMiddleware(new HandlersLocator([
// Ideally this could be autoconfigured
SomeDomainEvent::class => [
new HandlerDescriptor([
$container->get(SomeProjector::class),
'onSomeDomainEvent'
]),
],
]), allowNoHandlers: true),
]),
];
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Psr16Cache;
return [
'cache.file' => fn() => new Psr16Cache(new FilesystemAdapter(
directory: __DIR__ . '/../../var/cache',
)),
];
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
return [
Serializer::class => fn() => new Serializer([
new DateTimeNormalizer([
DateTimeNormalizer::FORMAT_KEY => 'Y-m-d\TH:i:s.uP',
]),
new ObjectNormalizer(),
], [
new JsonEncoder(),
]),
];