Документация/Структура проекта

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

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

На следующей схеме показаны папки нового проекта после установки фреймворка:

app   - папка с кодом приложения
     Bootstrap   - классы, необходимые для управления фреймворком
     ⊢ Events   - действия к определённым событиям
     |      ⊢ControllerEvent.php   - при инициализации контроллера
     |      ⊢MiddlewareEvent.php   - при инициализации middleware
     |      ⊢ModuleEvent.php   - при обращении к контроллеру модуля
     |      ⊢PageEvent.php   - при обращении к контроллеру 'страницы'
     |      ⊢TaskEvent.php   - при выполнении команды
     ⊢ Http
     |      ⊢ErrorContent.php   - контент для HTTP-ошибок
     |   ⊢BaseContainer.php   - класс контейнера
     |   ⊢ContainerFactory.php   - управление сервисами в контейнере
     |   ⊢ContainerInterface.php   - интерфейс контейнера
     Commands   - папка с классами команд
     |  ⊢DefaultTask.php   - пустой шаблон для создания команды
     |  ⊢RotateLogs.php   - команда для ротации логов
     Controllers   - папка для классов контроллеров
     |  ⊢DefaultController.php   - пустой шаблон для создания контроллера
     Middlewares   - папка для контроллеров-посредников
     |  ⊢DefaultMiddleware.php   - пустой шаблон для создания middleware
     Models
        ⊢DefaultModel.php   - пустой шаблон для создания Модели
config   - файлы с настройками
    ⊢common.php   - основные настройки
    ⊢database.php   - настройки баз данных
    ⊢main.php   - переопределяемые в модулях настройки
    ⊢system.php   - системные настройки
public   - публичная папка, в неё должен быть направлен веб-сервер
     css   - публичные файлы стилей
     images   - публичные файлы изображений
     js   - публичные файлы со скриптами
     ⊢.htaccess   - настройки сервера
     ⊢favicon.ico
     ⊢index.php   - точка доступа для веб-сервера
     ⊢robots.txt
resources   - пользовательские ресурсы проекта
     views   - файлы представлений (шаблоны)
        ⊢default.php   - демонстрационный шаблон фреймворка
        ⊢error.php   - шаблон страницы с ошибкой
routes   - папка с файлами маршрутов
     ⊢map.php
storage   - папка-хранилище, содержит вспомогательные файлы
     logs   - папка c логами в файлах
vendor   - папка с установленными библиотеками
     phphleb   - папка с библиотеками фреймворка
.gitignore   - управление видимостью файлов для Git
.hgignore   - управление видимостью файлов для Mercurial
composer.json   - настройки Composer
console   - точка доступа для консольных команд
readme.md   - описание фреймворка

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

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


#app

Папка app предназначена для кода самого приложения, основанного на фреймворке.


#Bootstrap

В этой директории содержатся классы для создания контейнера и сервисов, а также другие, являющиеся одновременно классами, код которых можно редактировать, и частями самого фреймворка.


#Events

Содержит классы, ответственные за обработку конкретных событий, возникающих при обработке запроса фреймворком.


#Http

Включает класс ErrorContent.php для назначения пользовательского контента, возвращаемого при возникновении HTTP-ошибок.


#Commands

Здесь находятся команды для выполнения из консоли или из кода напрямую. Можно создавать собственные команды, основываясь на шаблоне команды DefaultTask.php. Встроенные команды фреймворка при этом содержатся в коде самого фреймворка.


#Controllers

Папка для контроллеров фреймворка. Шаблон создания контроллера - файл DefaultController.php.

Контроллер — часть архитектуры MVC (Action-Domain-Responder для веб), отвечает за дальнейшее управление обработкой запроса, уже идентифицированного маршрутизатором, но не должен содержать бизнес-логику.


#Middlewares

Директория предназначена для контроллеров-посредников (middleware), выполняющихся до или после контроллера, который может быть использован только один в маршруте.


#Models

Папка предназначена для классов Моделей.
Модель — ещё одна часть архитектуры MVC (Action-Domain-Responder для веб), отвечающая за данные.


#config

Конфигурация состоит из PHP-файлов, содержащих настройки фреймворка.


#public

Публичная директория. Содержит файл index.php как точку входа для веб-сервера.


#resources

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


#views

Вид (представление) — часть архитектуры MVC (Action-Domain-Responder для веб). Эта папка предназначена для шаблонов веб-страниц. Здесь также могут храниться шаблоны Twig.


#routes

Маршрутизация - важная часть любого веб-фреймворка. В этой папке находится файл map.php, содержащий карту маршрутов фреймворка.


#storage

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


#logs

Логи и отчёты об ошибках в стандартизированном формате.


#console

Этот файл без расширения содержит PHP-код и выполняет консольные команды. Например:

$php console --version

Выведет информацию о текущей версии фреймворка.

Конфигурация фреймворка Запуск на PHP-сервере

Страница создана: @fomiash
К началу страницы