/cqrs-ddd-php-example

🐘🎯 CQRS PHP Example. Specific examples about how to model an app following DDD and CQRS principles

Primary LanguagePHP

You can do awesome stuff with php :)

CodelyTV CircleCI

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

  1. Clone this repository: git clone https://github.com/CodelyTV/cqrs-ddd-php-example cqrs-ddd-php-example
  2. Move to your project folder: cd cqrs-ddd-php-example
  3. 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.

  1. A MySQL database
    • Execute all .sql from /databases dir
  2. Apache/Nginx
  3. 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

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.