Фреймворк на PHP  — конкурс пет-проектов

Posted by

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

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

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

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

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

!

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

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

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

!

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

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

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

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

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

!

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *