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