PHP скелет для не магазинных web-приложений с MVC и ActiveRecord

264
20 декабря 2017, 23:16

История со впадением в ступор при выборе скелета - знакома тем, кто делает сайты/сервисы радикально отличающиеся от магазинов, и сайтов-блогов/визиток. В итоге скелет для каждого нового проекта получается методом "удалим всё ненужное из старого проекта, вот и скелет!". Очень хочется прервать этот замкнутый круг, ведь возможно есть качественные скелеты? Теперь к конкретике:

Под скелетом я понимаю нечто среднее между фреймворком из коробки (yii, zend например) и CMS (wordpress, bitrix например). То есть не только архитектурное устройство, что даёт фреймворк. Нужны также совсем базовые модули "под дописку". Какой скелет требуется конкретно нам, и возможно многим:

  1. Основан на любом из фреймворков с MVC, имеет модульную структуру
  2. Работа с БД идёт через ActiveRecord, приветствуется присутствие ORM
  3. Имеет на борту системные модули - работа с файлами с возможностью переключать хранилище (Storage), группа компонентов для общих вещей (вроде тикетов техподдержки, тегов, поиска, логгирования ошибок, и.т.п. модуль Utility).
  4. Модуль пользователя с авторизацией через соцсети, с возможностью требования некоторых перс-данных для получения полноценного статуса (User). Не обязательно, но желательно с модулем оповещений по СМС/на-почту/на-сайт.
  5. Минималистичная работа с контент-страницами (Article).
  6. Не обязательно, но желаемо - платёжный модуль: балланс пользователя, услуги и подписка, экваеринг (Billing).

Не обязательна даже админка, тем более не требуются системные вещи вроде компиляции css, сборка react (как в magento).

Проблема в том, что в основной массе для web штампуются интернет-магазины, блоги, и визитки. Как только появляется необходимость иного сервиса - нам вот приходится либо тянуть громоздкий код за собой, либо писать с нуля(неизвестно даже что быстрее и лучше выходит). Можно было бы обрезать модули одной из существующих CMS - но во первых: не помню бесплатных CMS, которые активно используют ActiveRecord (это важное требование), во вторых они все очень избыточны запутаны: то есть апгрейд заточен там под обновления от авторов CMS/модулей и настройку модулей, а не под "дописку" кода. И даже если несмотря на всё выбрать дописку CMS - это отказ от обновления - а это в свою очередь делает систему недолговечной в плане безопасности.

Но может быть мы отстали, и подобных качественных скелетов уже много? Или в общем альтернатив нет? Подскажите пожалуйста, на какие продукты стоит обратить внимание.

P.S. Вопрос не совсем в тематике SO, так как предполагает в ответе мнение о скелете, тем не менее для автора он очень горяч и актуален.

Answer 1

Первое, что приходит в голову - MaxSite CMS , сама по себе освнована на MVC фреймворке CodeIgniter и ориентирована как раз на то, что дописывать модули и виджеты будете сами. а по большому счету полностью универсальных решений не бывает, тут либо смириться с недостатками существующих CMS, или писать что-то свое под свои цели

Answer 2

Я могу порекомендовать обратить внимание на фреймворк Laravel в связке с админкой Sleeping Owl для создания типовых crud-операций.

Laravel -- один из наиболее популярных PHP-движков в Европе, сейчас это там стандарт де факто. В качестве подтверждения могу привести линк на stackoverflow trends.

Каким вашим требованиям удовлетворяет:

  • модульная структура
  • mvc из коробки (впрочем, это сейчас во всех популярных движках), поддержка роутингов, контроллеров, миддлвари и т.п.
  • ActiveRecord из коробки и ORM из коробки (с учётом модульности -- можно заменять на другие варианты)
  • имеет модуль работы с файловой системой (абстракция, которая поддерживает не только локальные файлы, но и работу с облачными файловыми системами)
  • интеграция с соцсетями из коробки, возможно придётся для каких-то соцсеток писать собственные провайдеры -- но проще поставить пакет Socialite

Crud-админки не являются частью движка, нужно ставить сторонние решения поверх. Одна из самых популярных админок -- Sleeping Owl, поддерживается русскоязычным коммьюнити, шлёпать админки с ней -- одно удовольствие.

Работа с контент-страницами тоже часть админки -- поэтому описываю в этом пункте.

Чего нет в коробке:

  • Работа с тикетами
  • Билинг
  • Корзина покупок (можно поискать готовые модули, например Crinsane или создать свой)
READ ALSO
Выбрать из таблицы один параметр по двум колонкам

Выбрать из таблицы один параметр по двум колонкам

Использую библиотеку Medoo, нужно получить запись из таблицы, где user_one = (мой id) или где user_two = (мой id), но выборка происходит только значению user_one

172
curl_exec 504 timeout

curl_exec 504 timeout

Всем привет! Не могу понять в чем проблемаЕсть версия что может меня забанили, но хотелось бы быть точно уверенным

208
Как сделать если изображение меньше 700px то не ресайзим?

Как сделать если изображение меньше 700px то не ресайзим?

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

234
Отправка headers AngularJS [требует правки]

Отправка headers AngularJS [требует правки]

Когда я пытаюсь отправить токен в headers возникает ошибка:

192