О проекте

Данный проект является учебным и не предназначен для использования на production среде. Единственная его цель - помочь изучить подходы при разработке кода и быть иллюстративным материалом на курсе "Паттерны и практики написания кода".

В проекте могут встречаться недоработанные части кода и незавершённые реализации, что является допустимым, поскольку упор делается на возможность быстрого погружения в код. В реализации осознанно содержится минимальнонеобходимый набор библиотек и классов.

Структура проекта

root/
|- app/
|  ├─ Command/
|  ├─ Db/
|  └─ Framework/
|- bin/
|- data/
|- etc/
|  └─ di/
|     └─ framework/
|- sripts/
|- src/
|  ├─ Controller/
|  ├─ Model/
|  |  ├─ Entity/
|  |  └─ Repository/
|  ├─ Service/
|  └─ View/
|- test/
└─ web/

app

Ядро проекта. В нём загружаются настройки сервиса, инициализируется каркас и происходит поиск необходимого контроллера.

bin

Исполняемые файлы для запуска служебных утилит.

data

Хранит всю динамическую информацию в sql lite базе данных.

etc

Содержит конфигурационные настройки.

src

Точка расширения фреймворка. Именно сюда разработчики помещают свой код. Реализован на основе паттерна MVC. Controller - содержит контроллеры. Точка входа всех запросов к серверу и последующего формирования ответа. Model - содержит модели. Получает данные из различных источников (БД, внешнее api и т.д.). Service - слой бизнес-логики. Содержит код, который чаще всего может подвергаться рефакторингу и изменению. View - содержит представление. Форммирует json ответ сервера.

scripts

curl запросы для взаимодействия с микросервисами.

test

Содержит юнит- и интеграционные тесты. В папке показан пример юнит-теста для одного класса.

web

Точка вход в проект, которая занимается первичной загрузкой модулей и подготавкой проекта к обработке запроса.

Инструменты

Микросервис работает на php версии >=8.1 Для разворачивание проекта есть два способа:

Способ 1

Установить php интерпретатор и все необходимые зависимости. Затем в корне проекта выполнить

make deploylocal

после этого в браузере проверяем работоспособность проекта

http://127.0.0.1:8080/product/list

Способ 2

Установить Docker и Docker compose. Затем в корне проекта выполнить

make deploy

после этого в браузере проверяем работоспособность проекта

http://127.0.0.1:8080/product/list

если использовали виртуализацию через minikube или другой инструмент, то url может быть примерно таким

http://minikube:8080/product/list

для удаления образа выполнить

make delete

Взаимодействие

Для выполнения запросов к проекту вы можете воспользоваться подготовленными curl запросами из папки scripts.

Для продвинутых пользователей в корне проекта располагается postman коллекция. Если у вас не установлено это приложение, то перейдите на сайт postman.com, затем выберете ОС и дальше нажимаете загрузить. После установки postman, переходите в приложение. В нём нажимаете кнопку import и в проводнике переходите в корень проекта.