Пау Гарсия -> Акции в каталоге
Сделано с
- PHP 8.1
- ДДД
- Шестиугольная архитектура (порты и адаптеры)
- CQRS
- Докер
- Тестирование с помощью PHPUnit
Основные инструкции
- Запустите docker-контейнеры:
docker-compose up -d
- При первом запуске установите зависимости:
docker-compose exec php-fpm bash
, а затем composer install
API МАРШРУТЫ
- http://localhost:33000/api/products-with-discounts (все продукты)
- http://localhost:33000/api/products-with-discounts?filterByCategory=boots (фильтровать по категории)
ИСПЫТАНИЯ
- Для запуска тестов
docker-compose exec php-fpm bash
, а vendor/bin/phpunit --testdox
ПОЯСНЕНИЯ К РЕШЕНИЯМ
- Я использовал Symfony для разработки простого API-продукта/скидок, и ответом от них был список продуктов с примененными скидками.
- Я использую простой докер (веб-сервер nginx/php-fpm/mongo) для запуска проекта.
- Я решил использовать БД «в памяти» просто для функциональности этого упражнения, но в проекте я разработал репозитории Mongo, потому что в упражнении говорится: «Вы должны принять во внимание все, что я решил использовать БД «в памяти» просто для функциональности. из этого упражнения, но в проекте я разработал репозитории mongo, потому что в упражнении говорится: «Вы должны принять во внимание, что этот список может вырасти до 20 000 продуктов, и mongoDB, возможно, будет хорошим вариантом в этом случае». posibiliry.ccount, что этот список может вырасти до 20 000 товаров». и mongoDB, возможно, будет хорошим вариантом в этой возможности.
- Я создал всю структуру с помощью гексагональной архитектуры и DDD, с помощью этой техники отделяю наши бизнес-правила от остального кода.
- Один ограничительный контекст «Каталог» внутри него имеет 3 объекта (Product, ProductDiscount и ProductPriceSummary).
- Я использовал шаблон CQRS в наших случаях использования (команды и запросы), это помогает нам их тестировать.