Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

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

#php #cms #framework


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

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


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


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

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

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

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


Ответы

Ответ 1



Я могу порекомендовать обратить внимание на фреймворк Laravel в связке с админкой Sleeping Owl для создания типовых crud-операций. Laravel -- один из наиболее популярных PHP-движков в Европе, сейчас это там стандарт де факто. В качестве подтверждения могу привести линк на stackoverflow trends. Каким вашим требованиям удовлетворяет: модульная структура mvc из коробки (впрочем, это сейчас во всех популярных движках), поддержка роутингов, контроллеров, миддлвари и т.п. ActiveRecord из коробки и ORM из коробки (с учётом модульности -- можно заменять на другие варианты) имеет модуль работы с файловой системой (абстракция, которая поддерживает не только локальные файлы, но и работу с облачными файловыми системами) интеграция с соцсетями из коробки, возможно придётся для каких-то соцсеток писать собственные провайдеры -- но проще поставить пакет Socialite Crud-админки не являются частью движка, нужно ставить сторонние решения поверх. Одна из самых популярных админок -- Sleeping Owl, поддерживается русскоязычным коммьюнити, шлёпать админки с ней -- одно удовольствие. Работа с контент-страницами тоже часть админки -- поэтому описываю в этом пункте. Чего нет в коробке: Работа с тикетами Билинг Корзина покупок (можно поискать готовые модули, например Crinsane или создать свой)

Ответ 2



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

Ответ 3



Рекомендую Yii2 фреймворк. На мой взгляд, это лучшая платформа из всех фреймворков и CMS с которыми я когда-либо работал. Там есть все, о чем вы просили. Если будете выбирать фреймворк, то только Yii2, и никакой ни Laravel, как пишут в другом ответе! Там и половины нет тех возможностей, что есть в Yii2. Перечислю основные плюсы специально в вашем контексте: Мощный встроенный инструмент генерации кода. Админки любой сложности штампуются на раз, и безо всяких ошибок в коде. Расширений под Yii написано масса, и это далеко не базовые модули. Найти можно все что угодно. ActiveRecord, Виджеты, RESTful API, генерация документации, PJAX с которым вообще забываешь про написание AJAX-ов в backend, мощная система ролей RBAC, I18N со сканированием всего проекта, разделение приложения на frontend и backend и много другого. Один минус - порог вхождения не малый. В тот же Laravel гораздо проще стартануть, но и возможностей будет намного меньше. Удачи с выбором! ;)

Комментариев нет:

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