Projeto para ilustrar o uso do Chain Of Responsibility
O objetivo é apresentar exemplos de aplicação do padrão de projeto Chain of Responsibility. Neste projeto é possivel identificar outros padrões usados, como por exemplo: Template Method e State. Mas o foco é apresentar como um processo complexo pode ser segmentado e tratado por diferentes manipuladores ou como, podemos lançar uma requisição que seguirá em uma esteira e poderá ser tratada por algum manipulador que decidir tratar.
Setup
Desenvolvimento local
Para executar o projeto, basta rodar os seguintes comandos make:
Obs.: São necessários o docker
e docker-compose
previamente instalados e configurados no ambiente local
make docker-build
make docker-composer-install
make docker-up
Após executar esse comandos, rode no banco SQlite, os scripts que estão no diretório: src/Infra/Database/Migrations
Como é um projeto com fins acadêmicos, você encontrará linhas comentadas em alguns scripts. O projeto ainda está em desenvolvimento, mas sinta-se a vontade para opnar e até melhorar!
para acessar uma espécie de front, acesse pelo navegador: localhost:8000
Qualquer um dos usuários na tabela usuarios
pode ser usado e eles estão com senha: 123456
Para acessar o mailtrap, utilize esse caminho: localhost:8125
Usuário mailtrap
e senha: mailtrap
Você também pode olhar o script: src\App\ConsoleApplication.php
Esse script está com varias linhas comentadas de testes usando os cruds e outros serviços.
para rodar ele, acesse o container usando o comando: make docker-bash
Em seguida no console no container: php app.php
Para o cenário principal apresentado nesse projeto, recomendo que você utilize xDebug com alguma ide para seguir o processo quando solicitar uma aprovação de orçamento.
Tecnologias
PHP ≥ 8.1
SQlite 3