Our code, it's stored in the src folder. One for leads and another for event logging.
src
├── EventLogger
│ ├── Domain
│ ├── Infrastructure
│ └── Repository
├── Leads
│ ├── Command
│ ├── Domain
│ ├── Infrastructure
│ └── Repository
└── Shared
├── Domain
└── InfrastructureWe have two domains: one for leads and another for event logging. Also, we have a Shared folder for some shared code between al domains.
We are implementing CQRS in our controllers in order to separate queries, commands, and most important, our code from symfony or other infrastructure code. We have a InMemorySymfonyCommandBus.php and a InMemorySymfonyQueryBus.php to dispatch any request we implement.
We also have a EventBus with two possible implementations: We have InMemorySymfonyEventBus.php and a MySqlDoctrineEventBus.php to dispatch events, store them in database and executed them assyncronous with a command.
With make start you can run dockers containers and you will find the project into http://localhost:8000. When you finish working you can just make stop to stop containers.
We use GitHub Workflow to test our project and check style after every commit. If you go to the Actions tab you can see each execution. Also, you will receive an email if you commit something and don't pass through all our checks.
If you want yo can execute each of this tests with the following commands in this doc.
We have two testing suits with PHP Unit, one for unit testing an another for integration. You can execute any of them with:
make test/unit # Unit testing
make test/integration # Integration testingAlso we use behat to test features. You can execute this tests with:
make test/functional # Functional testingIf you want to execute all you can simply execute make test/all.
To ensure that all the code write in this project follow the same style guide and it's free of error we have two types of code checks:
make style/code-style # Code style
make style/static-analysis # Static error checker
make style/all # Run both