jorge07/symfony-6-es-cqrs-boilerplate

Entender comportamiento

Closed this issue · 3 comments

Hola, estoy empezando a estudiar esta plantilla.
He cogido el caso de uso UserSingUpController en UI pero cuando llego a este punto:
$this->exec(new SignUpCommand($uuid, $email, $password));
me pierdo, no consigo saber como se llega al dominio y da de alta al usuario.

Se supone que despues del CommandBus va un handler pero no consigo localizar y seguir tirando del hilo para llegar al Domain.

¿Me puedes ayudar?

Hey,

Vamos por partes, como Jack el destripador:

SignUpCommand reside en el namespace App\Application\Command\User\SignUp. Allí encontrarás SignUpHandler.

Como se conecta?
Typehint
Symfony Messenger usa typehint del __invoke para saber como hacer el routing del mensaje. Por lo que cuando en el compiler pass el bus recibe los handlers todos los servicios con tag del componente y bus usa reflection para recoger esta información y hacer el mapping.

Por lo que el workflow es el siguiente:

Command|Query|Event -> Bus -> Middlewares -> Handler

Te recomiendo echar un ojo a la documentación de symfony messenger y la doc del repo.

Es extensa la doc de messenger así que paciencia. Espero que te sea de ayuda.

Una manera de entender por donde pasa la requests es configurar xdebug en tu IDE y poner un breakpoint del que ir tirando y ver como se relacionan los componentes entre si. Altamente recomendable. ;)

Gracias por tu respuesta Jorge, voy a estudiarlo