К содержанию
Medusa
Документация

Архитектура

Фреймворк Medusa использует компактную структуру: основной код находится в каталоге www/, а дополнительные настройки и данные вынесены в корень проекта. Ниже перечислены ключевые файлы и директории.

Каталог www/

Объект Назначение
.htaccess

Правила Apache:

  • кодировка по умолчанию UTF-8;
  • отключён листинг каталогов;
  • разрешены симлинки;
  • задан индексный файл medusa/index.php;
  • отключён вывод PHP-ошибок;
  • включено логирование PHP-ошибок в logs/php_errors.log;
  • все запросы, которые не совпали с реальным файлом, директорией или симлинком, перенаправляются в medusa/index.php.
.env Смонтированный из корня файл с переменными окружения. В Docker-окружении источником служит корневой .env, а при его отсутствии — .env.example. Файл содержит параметры: APP_URL, PDO_USER, PDO_PASSWORD, FROM_MAIL и т.д.
init.php Пользовательский bootstrap-файл.
error.php HTML-страница для Web-ошибок приложения.
favicon.ico Иконка приложения.
robots.txt Настройки индексации для поисковых роботов.
sitemap.xml Карта сайта.
composer.json Корневой Composer-файл проекта.
composer.lock Зафиксированные версии установленных Composer-пакетов.
vendor/ Установленные Composer-пакеты.
package.json Корневой npm-файл проекта.
package-lock.json Зафиксированные версии установленных npm-пакетов.
node_modules/ Установленные npm-пакеты.
vite.config.js Конфигурация Vite-сборки для frontend-слоя.
frontend/ Исходники frontend-слоя: Twig-шаблоны, Vue-компоненты и shared-утилиты.
build/ Результат Vite-сборки (CSS/JS/изображения, шрифты и .vite/manifest.json).
medusa/ Основной код ядра фреймворка. Важно: пользовательские файлы в этом каталоге не создаются.
config/ Конфигурационные файлы.
routes/ Web- и API-маршруты.
cache/ Каталог кеша: смонтирован из .volumes/cache/
storage/ Локальное хранилище файлов приложения: смонтирован из .volumes/storage/, а при изменении параметра STORAGE_ROOT_PATH mount-путь меняется вместе с ним.
logs/ Логи приложения: смонтирован из .volumes/logs/.

Каталог www/medusa/

Объект Назначение
Start/
Loader.php Регистрация автозагрузчика классов.
Base/
Abstracts/Response.php Базовый абстрактный класс для типов HTTP-ответов.
Interfaces/Resource.php Интерфейс для контроллеров с CRUD-методами.
Interfaces/ServerUrl.php Контракт для работы с серверным URL.
Traits/SecurePassword.php Внутренний трейт для хеширования и проверки паролей.
Http/
Server.php Работа с адресом текущего запроса.
Request.php Работа с входящим HTTP-запросом.
Response.php Формирование HTTP-ответа.
  • Response/Html.php
  • Response/JsonResult.php
  • Response/JsonError.php
Типы ответов для HTML и JSON-ответов.
Route.php Работа с Web-маршрутами.
Api.php Работа с API-маршрутами.
Client/Curl.php HTTP-клиент на базе cURL.
Cookie.php Работа с cookie.
Session.php Работа с сессиями.
Helpers/
Code.php Генератор числовых кодов по маске.
Hash.php Генератор строковых хешей.
Uuid.php Генератор UUID версии 4.
Token.php Генератор токенов.
Email.php Проверка email-адресов, фейковых доменов и чтение значения адреса.
Phone.php Подготовка телефонных номеров к сохранению и выводу.
Frontend.php Фасад helper-слоя для fluent-работы с Twig- и Vite-подходами.
Frontend/Twig.php Helper-обёртка над TwigView.
Frontend/Vite.php Helper-обёртка над ViteEntry.
DataBase/
PDO.php Расширение стандартного PDO дополнительными возможностями.
Lang/
Loc.php Загрузка и получение локализованных сообщений.
Mail/
Mail.php Формирование и отправка писем.
Queue/
RabbitMQ.php Работа с очередями RabbitMQ.
Storage/
Directory.php Работа с директориями.
File.php Работа с файлами.
Image.php Работа с изображениями.
Redis.php Работа с данными Redis.
Frontend/
Path.php Формирование полного и относительного путей к frontend-исходникам и каталогу сборки.
ManifestJson.php Формирование пути к файлу .vite/manifest.json в каталоге сборки.
TwigView.php Рендеринг Twig-шаблонов из одного или нескольких source-каталогов frontend с кешированием в www/cache/.
ViteEntry.php Генерация preload/CSS/JS-тегов по manifest и выдача mount/state для Vite entry-приложений из одного или нескольких source-каталогов frontend.
Прочее
index.php Точка входа приложения и инициализация окружения.
constants.php Глобальные константы приложения.
functions.php Подключение базовых и вспомогательных функций из functions/.
functions/ Набор базовых и вспомогательных функций.
routes.php Объявление системных Web- и API-маршрутов, а также подключение файлов www/routes/api.php и www/routes/web.php.
composer.json Composer-файл ядра с runtime-зависимостями. Подключается корневым composer.json через wikimedia/composer-merge-plugin.
package.json npm-файл ядра с runtime-зависимостями frontend. Подключается корневым package.json через workspaces.

Каталог www/config/

Объект Назначение
app.php Базовые параметры приложения и правила автозагрузки классов.
database.php Настройки и параметры подключения к базе данных.
mail.php Параметры отправки электронной почты.
storage.php Параметры локального файлового хранилища и Redis-сервера.
queue.php Параметры подключения к RabbitMQ-серверу.
frontend.json Параметры frontend-слоя: source-каталоги, каталог сборки и Vite-алиасы.

Каталог www/routes/

Объект Назначение
api.php Объявление API-маршрутов.
web.php Объявление Web-маршрутов.