Рейтинг: 50
не верифицирован
Всего отзывов: 0
  • Работ в портфолио: 6
  • Типовых услуг: 0
  • Работ на продажу: 0
  • Образование: Бакалавриат
  • Стаж работы: 21 год
  • Тип занятости: Полный фриланс
  • Юридический статус:Самозанятый
Был на сайте:

Кулинарный каталог Cookbook

Используемые навыки:

Описание

Это PHP-приложение для работы с кулинарными рецептами. Оно разработано как коллективная система каталогизации блюд и рецептов, обеспечивающая единообразие конечного результата — от идеи блюда до его подачи. Приложение предоставляет централизованный доступ к релевантной информации для сотрудников.

Решение

Архитектура

Приложение следует кастомной архитектуре MVC (Model-View-Controller) с рядом характерных паттернов.

Ключевые компоненты архитектуры

1. Паттерн Front Controller
Единая точка входа через public/index.php
Централизованная маршрутизация запросов в src/Router/Router.php
Все HTTP-запросы обрабатываются через одну точку

2. Контейнер внедрения зависимостей (Dependency Injection)
Кастомная реализация DI в src/DI/DiResolver.php
Использование PHP Reflection для автоматического разрешения зависимостей
Автоматическое внедрение зависимостей в контроллеры и модели

3. Паттерн «Фабрика»
Активное использование фабрик (например, CategoryListFactory, yieldListFactory)
Фабрики создают конкретные экземпляры на основе параметров
Каждая фабрика, как правило, соответствует доменной сущности

4. Паттерн Packer (кастомный построитель шаблонов)
Собственная реализация, схожая с View / Presenter
Packer-классы форматируют данные для представления (например, yieldListPacker, CategoryListPacker)
Отделение форматирования данных от бизнес-логики

5. Шаблонный слой представления
HTML-шаблоны с переменными-заглушками (например, {RECIPE_TITLE})
Рендеринг через простую замену строк
Наследование шаблонов через контейнерные шаблоны

Ключевые паттерны проектирования и подходы

1. Доменно-ориентированная структура
Организация по бизнес-доменам (Recipe, Dish, Ingredient, Categories и т.д.)
Каждый домен содержит собственные Model, Controller и вспомогательные классы
Чёткое разделение ответственности между доменами

2. Паттерн Factory–Packer
Factory-классы создают и конфигурируют packer-экземпляры
Packer-классы подготавливают данные для различных форм представления
Поддержка нескольких форматов вывода (web, печать, сервисы)

3. Кастомный ORM-подход
Использование библиотеки delight-im/db для работы с БД
Модели содержат прямые SQL-запросы и специализированные методы
Логика подключения к БД вынесена в trait DBInstance

4. Ролевая модель доступа
Интеграция с delight-im/auth для аутентификации
Роли: Super Admin, Chef, Cook, Service
Различные UI-сценарии в зависимости от роли пользователя

Ключевые компоненты и их взаимосвязи

Базовая инфраструктура:
Router — сопоставляет URL с контроллерами, управляет доступом и рендерингом
DI Resolver — автоматически создаёт экземпляры с корректными зависимостями
Слой БД — поддержка двух типов соединений и Singleton-паттерн

Доменные компоненты:
Models — бизнес-логика, запросы к БД, валидация данных
Controllers — обработка HTTP-запросов и координация слоёв
Factories — получение данных и создание packer-объектов
Packers — форматирование и подготовка данных для вывода

Слой представления:
HTML-шаблоны с поддержкой ролей
Output Builder для загрузки и компоновки шаблонов

Вспомогательные компоненты:
Helpers — общие утилитарные функции
Picture — загрузка изображений, генерация миниатюр, удаление

Поток данных:
Обработка запроса — вход через index.php, маршрутизация, DI, вызов action()
Получение данных — Controller → Factory → Model → Packer
Формирование ответа — обработка шаблонов и возврат HTML

Ключевые возможности:
Поддержка нескольких баз данных
Расширенный поиск и фильтрация
Полноценное управление изображениями
Ролевой пользовательский интерфейс
Модульная и переиспользуемая система шаблонов

Результат

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

Ссылки на примеры реализации

 cookbook.kaydansky.ru

Презентация проекта

Screenshot 2026-01-31 162714.png
Screenshot 2026-01-31 162825.png

Оценили проект:

0