Очередной фреймворк на PHP — конкурс пет-проектов
Создал PHP-фреймворк для создания веб-проектов DeltaFramework, который должен облегчить жизнь верстальщикам.
987 открытий4К показов
Всем привет. Сразу предупреждаю, что чукча не писатель, поэтому главное не потерять нить повествования.
Иногда, когда становилось скучно и рабочие проекты пилить не хотелось, я садился за разработку собственного велосипеда. Причем архитектура была выбрана не то чтобы правильная, а наиболее удобная для коротания времени за написанием кода. Где-то встречались костыли, где-то некие ноу-хау.
Мой велосипед представляет из себя некий PHP-фреймворк для создания веб-проектов.
На текущий момент он представляет следующий функционал:
- Авторизация;
- Регистрация;
- Роли пользователей;
- Верификация E-Mail;
- Рассылки почты;
- Поддержка шаблонов почтовых отправлений;
- Менеджер очереди заданий;
- Шаблонизатор;
- Поддержка маршрутизации;
- REST API;
- Кеширование;
- Логирование;
- Работа с файлами;
- Миграции;
- Captcha;
- DDoS Guard (basic).
Пользовательская часть построена с использованием шаблонизатора Twig. Я посчитал, что это приемлемо и, вероятно, в дальнейшем облегчит жизнь верстальщикам.
Админка же, напротив, сделана без использования каких-либо шаблонизаторов (привет, Битрикс). Местами реализации ужасны, местами из глаз идет кровь, но оно работает. Сделано так, скорее, только на время альфа-версий.
Функционал пилится, некоторые идеи приходят в неудобное время, и чтобы они появились в качестве реализации, я иногда грешу простыми и топорными реализациями с надеждой на причесывание в дальнейшем. Техдолг копится, как говорится…
Из интересного также есть функционал обработки роутов (маршрутов) для фронтовой части сайта с поддержкой динамических составляющих.
Реализована поддержка многосайтовости с подключением локального файла конфигурации (когда мы линкуем папку с ядром к другому проекту и создаем конфиг для нового проекта). А для облегчения развертывания используются миграции через Phinx.
Для большей гибкости реализованы роли пользователей для контроля доступа к каким-либо частям проекта. Там же есть отдельные роли как для администратора с максимальными правами и базовой роли пользователя, так и для менеджера с урезанными правами (базовый доступ к админке). Накручивать можно по желанию что угодно. Кстати, имеется функционал логирования, что очень облегчает поиск виновного, когда кто-то или что-то косячит. ?
Также реализовал функционал диспетчера очереди с поддержкой приоритетов, воркеров и повторного выполнения в случае возникновения ошибок. Использоваться может, например, для рассылки писем, обработки изображений и в целом для всего, что требует времени больше, чем пользователь готов ждать при загрузке страницы (рендерим страницу, а какие-то тяжелые задачи отдаем очереди на обработку, и все счастливы).
В качестве мониторингов был выбран Сентри как основной и Телеграм как дублирующий. Функционал второго также реализован в данном проекте.
Кодовая база на данный момент ведется на Гитлабе, но интереса ради продублировал репозиторий на Гитхаб с публичным доступом. Мало ли, кому-то данный велосипед зайдет. ?
Ссылка на репозиторий проекта:
987 открытий4К показов