Чуть больше чем просто блог :)

BeeCMS::Файловая структура проекта

В своем проекте системы управления контентом «BeeCMS» хочу реализовать 3 основных интерфейса вместо 2х общепринятых в массовом понимании структур

, а именно:

  • Frontend
  • Administrator
  • Developer

Какой смысл разбивать Backend на 2?

Это связано с абсолютно различной логикой этих 2х приложений.

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

Приложение для разработчиков очевидно, что нужна для разработчиков J. То есть она будет содержать в себе как специальные модули, которые нужны только для разработчиков (тесты, миграции, работа с шаблоном, гайд разработки, управление модулями…), так и сквозные модули всего сайта, которые будут содержать только нужные методы для конкретного приложения. Конечно это приведет к небольшому дублированию кода, но зато хорошо отразится на скорости загрузки страниц и уменьшения объема ОП, а так-же приведет к лучшему пониманию и читаемости проекта. Плюс ко всему таким образом мы уменьшим логику при смене нужных панелей для Администраторов и Разработчиков.

Терминология

Хочу внести некоторую ясность для читателей по терминологии.

«Приложения» в Yii2 – это объекты, создаваемые с помощью входного скрипта. Например index.php находящийся в папке frontend/web. Приложения управляют всей структурой и жизненным циклом системы. В нашем случаи будет 3 приложения:

  • Developer
  • Administrator
  • Frontend

В Yii2 название «Модули» используются как некоторые небольшие расширения содержащие свои модели, представления, контроллеры и возможных других компонентов. Например модуль Blog для создания и вывода публикаций блога, или Интернет-магазин и т.д.

В Yii2 так-же есть «Расширения» - это предварительно написанные вами или сторонними разработчиками пакеты, которые выполняют определенный функционал. Один из примеров такого расширения «yiisoft/yii2-debug», предназначенный для отладки приложений при разработке.

Файловая структура проекта:

BeeCMS-Aehitect

«config» - содержит основной конфиг сайта.

Папка «environments» содержит варианты окружения dev и prod, необходимые для переключения с состояния разработки на продакшин и обратно. Данная папка устанавливается по умолчанию при установке Yii2.

Остальные корневые папки «administrator», «developer» и «frontend» будут схожи по своей структуре. Они будут содержать:

  • конфигурационный файл для текущего модуля;
  • папка modules – содержит наши модули. Например «Блог», или «Интернет-магазин» и др.;
  • language – содержит подпапки с названиями локализаций используемых языков;
  • runtime – папка логов и кеш файлов;
  • templates – в данной папке хранятся наши шаблоны, которые будут/могут подразделятся еще на мобильные и десктопные версии, автоматически переключаясь при заходе с различных устройств;
  • web – стандартная папка входного скрипта index.php и некоторых дополнительных.
  • Данная структура со временем конечно будет усложнятся и в итоге возможно поменяется, но это я думаю уже история следующей версии ).

Например, для загрузки файлов можно сделать папку «Downloads» и для картинок – папку «images». Поскольку они не относятся ни к одному конкретному приложению, то логично поместить их в корень проекта для быстрого доступа к ним.

 

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

Можете читать и ничего не делать, а можете поделится в интернет-сервисах ниже и таким образом поддержать этот проект, мой интерес и возможно помочь другим пользователям.

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Авторизация