jorge07 / symfony-6-es-cqrs-boilerplate

Symfony 6 DDD ES CQRS backend boilerplate.
MIT License
1.07k stars 187 forks source link

Entender comportamiento #153

Closed bareser closed 4 years ago

bareser commented 4 years ago

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?

jorge07 commented 4 years ago

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.

jorge07 commented 4 years ago

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. ;)

bareser commented 4 years ago

Gracias por tu respuesta Jorge, voy a estudiarlo