You can do awesome stuff with php :)
Implementation example of a PHP application following Domain-Driven Design (DDD) and Command Query Responsibility Segregation (CQRS) principles, keeping the code as simple as possible.
Used by the CodelyTV Pro courses:
Environment setup
Install the needed tools
- Clone this repository:
git clone https://github.com/CodelyTV/cqrs-ddd-php-example cqrs-ddd-php-example
- Move to your project folder:
cd cqrs-ddd-php-example
- Install dependencies:
php composer.phar install
Run the tests!
Once you have all the dependencies, in order to execute the tests, run this command:
vendor/bin/behat -p api
// This will also create the needed databases.
vendor/bin/behat -p applications
vendor/bin/phpunit
Run the environment
While this doesn't have docker integration (feel free to do a pull request :) we need a few thing to run this together.
- A MySQL database
- Execute all
.sql
from/databases
dir
- Execute all
- Apache/Nginx
- Supervisord
- Execute the
applications/api/bin/console codelytv:domain-events:generate-supervisor-files
command - Link the
applications/api/app/config/supervisor
folder to the supervisor config one - Start supervisord
- Execute the
Contributing
There are some things missing (add swagger, improve documentation...), feel free to add this if you want! If you want some guidelines feel free to contact us :)
Extra
This code was show in the From framework coupled code to #microservices through #DDD talk and doubts where answered in DDD y CQRS: Preguntas Frecuentes video.