# Шаблон HTTP приложения

Пакет httpsoft/http-app представляет собой шаблон приложения для быстрого создания простых, но качественных веб-приложений и API. «Из коробки» шаблон приложения настроен на работу с JSON для быстрой разработки REST API.

Ядром этого шаблона приложения является микрофреймворк HttpSoft\Basis. По умолчанию также используются: devanych/di-container, реализующий PSR-11, и логгер monolog/monolog, реализующий PSR-3. Вы можете легко изменить контейнер и логгер на ваши предпочтительные реализации соответствующих PSR.

# Установка

Для этого шаблона проекта требуется PHP версии 7.4 или новее.

Используйте Composer и его следующую команду для установки:

composer create-project --prefer-dist httpsoft/http-app <app-dir>

Чтобы проверить установку, перейдите в <app-dir> и запустите встроенный веб-сервер PHP:

cd <app-dir>
composer run serve

После этого откройте в браузере http://localhost:8080.

# Тестирование и проверка

В каталоге приложения выполняются следующие команды:

  • composer run test — запускает тесты.
  • composer run static — запускает статический анализ кода.
  • composer run cs-check — запускает проверку стандартов кодирования.
  • composer run cs-fix — запускает автоматическое исправление нарушений стандартов кодирования.
  • composer run check — запускает проверку стандартов кодирования, статический анализ кода and тесты.

# Структура директорий

По умолчанию шаблон приложения имеет следующую структуру:

bin/                  Исполняемые консольные скрипты.
    chmod-var.php     Рекурсивное изменение прав директории "var/".
config/               Файлы конфигурации.
    config.php        Основная конфигурация.
    container.php     Внедрение зависимостей.
    pipeline.php      Конвейер посредников.
    routes.php        Маршруты HTTP-запросов.
public/               Общедоступные файлы из Интернета.
    index.php         Сценарий входа (фронт-контроллер).
src/                  Исходный код приложения.
    Http/             Классы HTTP-приложения (экшены, посредники и т.д.).
    Infrastructure/   Вспомогательные классы (фабрики, слушатели и т.д.).
    Model/            Классы модели предметной области (сущности, репозитории и т.д.).
tests/                Набор тестов для приложения.
vendor/               Установленные пакеты Composer.
var/                  Временные файлы (журналы, кеш и т.д.).

Вы можете изменить структуру шаблона приложения по своему усмотрению.

# Жизненный цикл приложения

Подробнее о создании и использовании экземпляра приложения читайте здесь и здесь.

  1. HTTP-запрос обращается к сценарию входа (фронт-контроллеру) public/index.php.
  2. Сценарий входа загружает конфигурацию, внедряет зависимости и создает приложение для дальнейшей обработки запроса.
  3. Приложение регистрирует конвейер посредников и маршруты запроса при помощи компонентов HttpSoft\Router и HttpSoft\Runner.
  4. Приложение запускает обработку текущего запроса, пропуская его через всю очередь установленных ранее посредников и обработчиков.
  5. В зависимости от результата обработки запроса возвращается HTTP-ответ, а при помощи компонента HttpSoft\Emitter, приложение отправляет заголовки ответа и выводит тело ответа в текущий выходной буфер.

# Руководство пользователя