- php 8.1 + xdebug
- mysql
- nginx
- reverse-proxy
- Предварительно установите Docker desctop.
- Создайте файл .env на основе .env.example (можно просто убрать .example вконце).
- в .env измените значение переменной BACKEND на удобное вам.
- Это наименование домена, на котором вы сможете запустить сайт.
- Зайдите в ваш файл hosts (
C:\Windows\System32\drivers\etc
) и добавьте туда доменные имена, например, у меня так:
127.0.0.1 evenBeta.my
- Проверьте чтобы
PORT
,MYSQL_PORT
не были заняты другими приложениями. в противном случае измените на свои. - В консоли перейдите в папку docker и выполните
docker-compose up -d
Тестовое задание выполнил в стиле DDD, т.к. в тестовом задании не было указано какой методологие пользоваться.
В основе DDD (domain driven design) лежит бизнес модель. Поэтому очень важно перенести все доменные объекты в код. т.к. именно ими выполняется работа (да, в данном случае бизнес логика лежит не в сервисах). Как можно заметить доменные объекты (в директории DDD) отображают реальные бизнес процессы описанные в тестовом задании Проблемы расширяемости тут нет, т.к. на каждую бизнес задачу создается свой контекст. и в DDD это нормально если в двух разных контекстах, лежат доменные модели, с одинаковым названием, но разным поведением. Таким образом мы избегаем "божественных" объектов.
К сожалению на Yii2 сложно изолировать слой БД от доменой логики (сложно следить за персистентностью), поэтому чтобы не писать кучу мапперов, сделал работу с БД непосредственно в слое DDD. также важно понимать что инфраструктурные модели ActiveRecord отделены от прочего кода, и содержат в себе только связи, и никакой логики, вся логика лежит только в доменных бизнес моделях
P.S. можно написать и через сервисы ))