Stars: 584
Forks: 85
Pull Requests: 37
Issues: 11
Watchers: 54
Last Updated: 2022-02-28 09:57:57
Domain-Driven Design in a PHP project using Symfony
License:
Languages: PHP, HTML, Gherkin
For a more acurated DDD, CQRS and Event Sourcing implementation see here
Wallet API in Symfony following DDD (Domain Driver Design).
:5601
src
\
|\ Application `Contains the Use Cases of the domain system and the Data Transfer Objects`
|
|\ Domain `The system business logic layer`
|
|\ Infrastructure `Its the implementation of the system outside the model. I.E: Persistence, serialization, etc`
|
\ UI `User Interface. This use to be inside the Infrastructure layer, but I don't like it.`
The tests follow the same structure and the phpunit tests are tagged with group tags: unit or functional.
The aceptation tests are inside the test UI
layer and attack the application from outside using Guzzle.
The environment is in PHP7.1 and the development containers are on etc/infrastructure/dev/docker-compose.yml
Up environment with: docker-compose -f etc/infrastructure/dev/docker-compose.yml up -d
Install dependencies: docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'composer install'
Setup database, etc with : docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'ant build'
Start async listeners: docker-compose -f etc/infrastructure/dev/docker-compose.yml exec fpm sh -lc 'bin/console rabbitmq:multiple-consumer events'
Follow the Jenkinsfile
or the gitlab-ci.yml
file, it's clear enough and contains a simply workflow to:
docker-compose -p
to avoid parallel jobs conflicts