Общая структура приложения

Под приложением понимается совокупность файлов и директорий проекта определенной структуры.

Под ядром приложения понимается группа базовых компонентов под общим названием BFF, возможный вариант ее объяснения - Best Friends Forever.

Рассмотрим структуру директорий приложения:

  • app - классы приложения, унаследованные с целью добавления дополнительной логики приложения либо изменения логики поведения основных компонентов ядра
  • bff - ядро приложения (базовые классы, модули, компоненты...)
    • base - базовые компоненты, перегружаемые в последствии аналогичными внешними классами
    • cache - классы реализующие работу с кешированием
    • captcha - капча
    • db - компоненты работы с базой данных
      • comments - компонент, реализующий работу с комментариями
      • dynprops - компонент, реализующий работу с динамическими свойствами
      • migrations - шаблоны классов миграций
      • nestedsets - компонент, реализующий работу с древовидной NestedSets структурой таблиц
      • publicator - компонент Publicator, альтернатива wysiwyg редактору
      • sphinx - компонент работы со Sphinx
      • tags - компонент, реализующий работу с тегами
    • extend - базовые классы расширений приложения
    • external - внешние компоненты используемые в ядре / приложении
      • hybridauth - библиотека реализующая API для авторизации через соц. сети
      • jevix - парсер HTML / текста, реализующий контроль допустимых тегом и атрибутов а также минимально необходимое типографирование
      • minifier - компонент отвечающий за минимизацию статических файлов (css,js)
      • parsedown - компонент реализующий поддержку Markdown разметки
      • phpmailer - отправка e-mail писем через sendmail, smtp
      • sphinx - API для работы с движком Sphinx
    • files - компоненты работы с файлами
    • fonts - файлы шрифтов используемые в ядре / приложении
    • gettext - компоненты работы с расширением gettext
    • img - компоненты работы с изображениями - загрузка, нарезка
    • logs - компоненты работы с логами (логированием)
    • modules - модули ядра
    • session - компоненты при работе с сессией и форумами
    • tpl - компоненты ядра отвечащие за отрисовку форм и списков в админ-панели
    • utils - дополнительные утилиты
  • config - файлы настроек приложения
    • db.tables.php - общие таблицы приложения
    • sys.php - файл системных настроек (домен проекта, доступ к базе данных и другие)
  • custom - директория хранения модифицированных файлов расширений
  • files - системные статические файлы
  • install - файлы необходимые для установки приложения: инструкции, дамп базы данных install.sql
  • modules - модули приложения
  • plugins - плагины приложения
  • public_html - public директория приложения (файл доступные по прямой ссылке)
    • css - css файлы приложения
    • custom - модифицированные статические файлы приложения
    • files - загружаемая статика
      • bnnrs - баннеры
      • extensions - загружаемые файлы расширений (доступные по прямой ссылке)
      • im - файлы вложений внутренней почты
      • images - изображения
      • min - минифицированные статические файлы приложения и расширений
      • pages - статические страницы
    • img - изображения приложения
      • admin - изображения используемые в админ-панели приложения
    • js - javascript файлы приложения
    • plugins - статические файлы плагинов (css,js,img)
    • themes - статические файлы тем (css,js,img)
  • themes - темы приложения
  • tpl - шаблоны приложения (в корне)
    • admin - шаблоны для админ-панели приложения
  • vendor - директория хранения внешних библиотек установленных посредством Composer

Базовые классы и компоненты приложения

bff - класс приложения

Cache - базовый класс работы с кешированием

Comments - компонент для работы с комментариями

Component - базовый компонент

config - компонент для работы с настройками

Database - класс работы с базой данных

Dynprops - компонент динамических свойств

Errors - класс работы с ошибками

Files - набор функций общего назначения для работы с файлами

func - набор общих вспомогательных функций

HTML - класс вспомогательных HTML методов

js - класс вспомогательных методов работы с javascript кодом

Input - класс валидации входящих данных (GET, POST, COOKIE ...)

Locale - класс работы с локализацией

CMail - класс выполняющий отправку почты (на основе PHPMailer)

Model - класс модели

Module - базовый компонент модуля

Pagination - компонент выполняющий формирование "постраничной навигации"

Publicator - компонент Publicator

Request - класс вспомогательных методов работы с параметрами запроса

Security - класс работы с сессией и реализацией механизмов защиты

Tags - компонент для работы с тегами

TextParser - класс вспомогательных методов обработки текста

tpl - вспомогательные методы для форматирования данных в шаблонах

User - класс работы с данными авторизованного пользователя

View - класс работы с отображением шаблонов