Игра Яндекс Практикума
Игра Яндекс Практикума
Игра Яндекс Практикума

Очередной фреймворк на PHP  — конкурс пет-проектов

Создал PHP-фреймворк для создания веб-проектов DeltaFramework, который должен облегчить жизнь верстальщикам.

987 открытий4К показов
Очередной фреймворк на PHP  — конкурс пет-проектов

Всем привет. Сразу предупреждаю, что чукча не писатель, поэтому главное не потерять нить повествования.

Иногда, когда становилось скучно и рабочие проекты пилить не хотелось, я садился за разработку собственного велосипеда. Причем архитектура была выбрана не то чтобы правильная, а наиболее удобная для коротания времени за написанием кода. Где-то встречались костыли, где-то некие ноу-хау.

Мой велосипед представляет из себя некий PHP-фреймворк для создания веб-проектов.

На текущий момент он представляет следующий функционал:

  •  Авторизация;
  •  Регистрация;
  •  Роли пользователей;
  •  Верификация E-Mail;
  •  Рассылки почты;
  •  Поддержка шаблонов почтовых отправлений;
  •  Менеджер очереди заданий;
  •  Шаблонизатор;
  •  Поддержка маршрутизации;
  •  REST API;
  •  Кеширование;
  •  Логирование;
  •  Работа с файлами;
  •  Миграции;
  •  Captcha;
  •  DDoS Guard (basic).
Очередной фреймворк на PHP  — конкурс пет-проектов 1
Одна из фронтовых страниц демосайта, шаблонизатор Twig

Пользовательская часть построена с использованием шаблонизатора Twig. Я посчитал, что это приемлемо и, вероятно, в дальнейшем облегчит жизнь верстальщикам.

Админка же, напротив, сделана без использования каких-либо шаблонизаторов (привет, Битрикс). Местами реализации ужасны, местами из глаз идет кровь, но оно работает. Сделано так, скорее, только на время альфа-версий.

Функционал пилится, некоторые идеи приходят в неудобное время, и чтобы они появились в качестве реализации, я иногда грешу простыми и топорными реализациями с надеждой на причесывание в дальнейшем. Техдолг копится, как говорится…

Очередной фреймворк на PHP  — конкурс пет-проектов 2
Страница авторизации в панели администратора

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

Реализована поддержка многосайтовости с подключением локального файла конфигурации (когда мы линкуем папку с ядром к другому проекту и создаем конфиг для нового проекта). А для облегчения развертывания используются миграции через Phinx.

Для большей гибкости реализованы роли пользователей для контроля доступа к каким-либо частям проекта. Там же есть отдельные роли как для администратора с максимальными правами и базовой роли пользователя, так и для менеджера с урезанными правами (базовый доступ к админке). Накручивать можно по желанию что угодно. Кстати, имеется функционал логирования, что очень облегчает поиск виновного, когда кто-то или что-то косячит. ?

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

В качестве мониторингов был выбран Сентри как основной и Телеграм как дублирующий. Функционал второго также реализован в данном проекте.

Очередной фреймворк на PHP  — конкурс пет-проектов 3
Пример уведомления о возвращении повисшего задания очереди в работу

Кодовая база на данный момент ведется на Гитлабе, но интереса ради продублировал репозиторий на Гитхаб с публичным доступом. Мало ли, кому-то данный велосипед зайдет. ?

Ссылка на репозиторий проекта:

Следите за новыми постами
Следите за новыми постами по любимым темам
987 открытий4К показов