- Зробити CRUD на Laravel зі збереженням даних у БД MySQL функції програми:
- реєстрація\авторизація
- додавання нових записів
- перегляд і редагування наявних записів
- видалення записів
- Для фронту можна використовувати bootstrap;
- Створення таблиць реалізувати через міграції;
- Реалізовано реєстарцію та авторизацію
- Реалізовано сторінки: перегляду усіх записів, одного запису, редагування, створення
- Реалізовано CRUD сутностей User та Post зі збереженням у БД
- Покрито PHPUnit тестами усі CRUD операції, сторінки, реєстрацію, авторизацію.
- Перейти у робочу директорію та виконати наступні команди в консолі:
git clone https://github.com/aleksandrboichuk/test-task.git
- клонування проєкту у робочу директоріюcd test-task
cp .env.example .env && cd docker && cp docker-compose.example.yml docker-compose.yml
- копіювання конфігураційних файлів для docker-compose та laravelchmod -R 777 data && chmod -R 777 logs
- встановлення прав на директорії логів та данихdocker-compose build && docker-compose up -d
- білд та підняття контейнерівdocker-compose exec php-fpm bash
- перехід у php-fpm контейнер для встановлення композеру (та виконання в майбутньому artisan команд)composer install
- встановлення composerphp artisan migrate --seed
- виконання міграцій та заповнення тестовими данними БДphp artisan test
- виконання PHPUnit тестів
Проєкт має бути доступним за посиланням http://localhost
-
Шаблон проєктування
Проєкт виконаний із застосуванням шаблону проєктування Сервісний шар (Service layer).
Сервіси з бізнес-логікою знаходяться у директорії Services.
За кожним сервісом закріплений окремий інтерфейс (Interfaces) в AppServiceProvider.
Для сервісів, які відповідають за бізнес-логіку, яка стосується моделей реалізовано абстрактний клас, який вони наслідують - ModelService, в ньому знаходяться загальні методи, які можуть бути застосовані для будь-яких моделей.
Сервіси використовуться у контролерах, Request-ах та PHPUnit тестах. При потребі використання сервісу - використовується саме його інтерфейс, за яким він закріплений.
-
Resources
CRUD-операції реалізовані з використанням resource-маршрутизації та resource контролерів. Для прдібних контролерів був реалізований абстрактиний resource-контролер (ResourceController). У ньому знаходяться загальні resource-методи, які є подібними у кожному resource-контролері: повернення view для сторінки редагування, перегляду запису сутності, або виведення таблиці с усіма записами сутності. Окремим випадком є методи store та update сутності. вони реалізовані окремо у контролері кожної сутності, оскільки вони приймають різни Request-и, а точніше іх класи.
-
PHPUnit
CRUD-операції, авторизацію, реєстрацію та сторінки проєкту покрито PHPUnit тестами. Виконується перевірка усіх кейсів, як успішних так і неуспішних, перевірка коректності роботи валідації.