vyshkant
@vyshkant
developer

Какой PHP-фреймворк лучше использовать для написания модульной CMS?

Добрый день.

Передо мной встала задача разработки некоторого сайта, "под крылом" которого должен быть доступен разнородный функционал, который, к тому же, будет постоянно расширяться в смысле добавления принципиально новых разделов (возможно, разными людьми). Т.е. расширение функционала должно быть с самого начала предусмотрено, чтобы последующие интеграции новых частей приложения были максимально автоматическими.

Для краткости этот разнородный функционал я буду называть модулями (хотя не уверен, подходящее ли это слово).

Хочу подчеркнуть, что под модулем подразумевается не просто некий полезный функционал, не какая-то новая библиотека, а набор программных средств и данных, позволяющих отобразить какую-то информацию на сайте "от и до", т.е. каждый модуль должен иметь контроллер, свойственные ему модели, классы для работы с БД, представления и, что немаловажно, программный код клиентской части приложения (при этом всё это должно соответствовать интерфейсам, общим для всего приложения).

Решение этой задачи я представляю себе следующим образом (тезисно):
  • Приложение должно состоять из CMS и расширений-модулей. (На самом деле я не уверен, действительно ли это будет CMS в полном смысле слова, но я буду использовать именно этот термин.)
  • В CMS должны быть заложены возможности экспорта-импорта модулей.
  • Модули должны быть независимы друг от друга, но зависимы от фреймворка и связанной с ним кодовой базы (т.е. не должны изобретать свои велосипеды, а использовать общую кодовую базу приложения).
  • Модули и CMS должны иметь общую систему авторизации, но отдельные системы пользовательских ролей.


Кроме того, для управления этой системой:
  • CMS должна иметь свою администраторскую панель, через которую можно было бы управлять вещами, относящимися ко всей CMS.
  • Модуль должен иметь свою администраторскую панель, интегрированную в админку CMS.


Также, вероятнее всего, потребуется обеспечить к этим модулям доступ через различные субдомены в виде "foo-module.site.com/bar-action-of-foo-module"

Нечто подобное (в ОЧЕНЬ первом приближении) я видел в CMS Joomla!, однако в ней всё-таки больше CMS-ности, а мне нужно в разы меньше (я не стремлюсь создать "ещё одну CMS" для пользователей, а хочу сделать свою работу немного проще за счёт разнесения общего и частного функционалов по разным корзинам). В Joomla! ближайшим аналогом моего "модуля" является "компонент", в котором (как и во всей Joomla!) реализован паттерн HMVC, о деталях "хорошей" реализации которого я не нашел ничего кроме красивых блок-схем, нарисованных пользователями той же Joomla!.

В общем, выше изложен большой набор хотелок, а вот вопросы:
  1. Какой существующий PHP-фреймворк наиболее подходит для написания этой CMS? Я сейчас смотрю в сторону Symfony2 и Yii2: заложена ли в них возможность использовать паттерн HMVC, или может в этом не будет необходимости?
  2. Если вдруг что-то из сказанного мною выше приводит вас в недоумение - я буду рад услышать критику касаемо постановки задачи или предлагаемых мною решений.
  3. Если вы знаете какие-то хорошие подходы для решения указанных выше задач - я буду очень рад услышать их.


UPD: Я задаю вопрос "какой фреймворк использовать" потому, что не знаю преимуществ существующих фреймворков для решения описанных задач. Поэтому, если вам не трудно, кроме собственно названия фреймворка укажите причины, по которым, по вашему мнению, данный фреймворк наиболее подходит (по сравнению с другими фреймворками) для решения описанных выше задач. Спасибо за понимание.
  • Вопрос задан
  • 1440 просмотров
Пригласить эксперта
Ответы на вопрос 3
@GrimJack
Сейчас прибегут любители своего у будут тягать одеяло во все стороны (симфони, уи2, ларавел и прочие). Тема заезжена, вывод - писать на чем умеешь/удобно
Ответ написан
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Yii2 это MCV. HMVC в yii2 реализуемо только топором и лопатой, что крайне не рекомендуется разработчиками фреймворка и считается идиотизмом. Модульная структура - без проблем. Написать CMS без проблем.
Ответ написан
@NesCafe62
Точно такая же идея у меня возникла несколько лет назад (использовал джумлу но напоролся на то что сложно в ней делать кастомизацю а некоторые вещи вообще не возможно, не изменяя ядро). Идея была сделать такую же CMS с возможностями джумлы только для программистов и модульную с устанавливаемыми/деинсталлиремыми частями (модули тоже задумывал не просто библиотеки с кодом, а еще и со своими визуальными интерфейсами)
Начал писать свой фреймворк, сделал на нем несколько проектов. Спустя пару лет узнал про yii, symfony и другие. Сейчас они хорошо развились с момента своих первый версий.
Рекомендовать использовать свой фреймворк я бы конечно пока не стал: документации нет (в 2.0 версии только одна страничка) и люди, привыкшие писать на yii и других готовых решениях, относятся к нему скептически.
Сейчас пишу 3.0 с поддержкой Composer, и других пожеланий.
Любые фреймворки хороши, если уметь ими пользоваться.
p.s. буду рад приветствовать всех (на гите), кто задается такими же вопросами как и автор, и готов поучаствовать в воплощении этой идеи в жизнь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы