RChe PHP Framework — релиз

Author Автор: Роман Чернышов    Опубликовано: 12 мая 2021

Доброго времени друзья! На протяжении многих лет мне пришлось поработать с большим количеством различных веб-проектов, от простых и не сложных инструментов на подобии парсера до крупных порталов включающих сотни, а иногда и тысячи специализированных функций. Многие из этих проектов писались с нуля, но в большей части в их основу ложился мой собственный PHP Framework о котором я рассказывал ранее, который в свою очередь зарекомендовал себя как стабильное и надежное решение, основными преимуществами которого стали: скорость, простота, безопасность и масштабируемость.

Сегодня же я хочу рассказать о своем новом решении, под названием RChe PHP Framework — это готовая платформа для создания веб-приложений, включающая в себя библиотеки кода, готовые шаблоны, интерактивный генератор кода и разделов сайта, админпанель с множеством предустановленных функций и многое другое. Все это позволяет существенно сократить время на разработку, сфокусировавшись на реализации самого важно — уникальной «бизнес логики», собственных идей и решений. RChe PHP Framework — это больше чем просто набор библиотек и функций, это полноценная CMS, позволяющая в считанные минуты развернуть на сайте готовую к работе платформу и предоставить пользователю необходимый контент с основным набором функционала, от регистрации на сайте — до личного кабинета с функцией пополнения баланса(например).

RChe PHP Framework — это компиляция моего опыта, полученного за многие годы работы с различными проектами, в котором учтены все потребности разработчика, с которыми он сталкивается в процессе написания кода, создания нового уникального функционала. А также потребности клиента, с учетом последующего развития и поддержки проекта. Фреймворк подходит как для создания крупных проектов, так и для небольших веб-приложений, при необходимости из него легко убирается админпанель и основная(пользовательская) часть сайта, превращая его в небольшой но очень гибкий инструмент.

Цели и задачи данного фреймворка

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

Общая информация

Основная часть сайта

  • Поддержка PHP 5.6 и выше, оптимизирован под PHP 7;
  • База данных MySQL 5 и выше, драйвера MySQL/MySQLi/PDO;
  • Методология ООП, архитектура MVC;
  • Работает как под управлением Apache, nGinx так и Windows Server;
  • Адаптивная верстка шаблонов, структуры сайта;
  • Шаблонизатор не используется, применяется PHP Short Tag (с целью увеличения скорости работы);
  • Автоматическая загрузка PHP классов, при обращении;
  • Поддержка кеширования запросов к БД, кеширования изображений(в том числе миниатюр);
  • Поддержка минимизации CSS, JS, HTML кода, при отдаче;
  • Автоматическая генерация WebP изображений для лучшей производительности;
  • Поддержка ЧПУ;
  • Ajax подгрузка данных;
  • Защита от DDOS на уровне скриптов;
  • Единая точка входа;
  • Содержит инсталлятор;
  • Включает в себя админпанель с набором функционала, делающим фреймворк полноценной CMS;
  • Поддержка автора в рамках условий прописанных в лицензии;
  • Наличие документации.

Описание набора библиотек

Semantic UI — CSS фреймворк для создания переносимых интерфейсов.
jQuery — Библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML.
jQuery UI — Библиотека на основе jQuery, реализующая более 20 плагинов.
Fontawesome — Набор шрифтов для выводя красивых иконок.
PapaParse — Работа с CSV на стороне пользователя по средствам JavaScript.

Функционал

Разделы и функции

  1. Регистрация;
  2. Авторизация;
  3. Восстановления пароля;
  4. Форма обратной связи;
  5. Комментарии;
  6. Опросы;
  7. Отзывы;
  8. Форум;
  9. Категории новостей, статей и т.д.;
  10. Страницы(новости, статьи, прочие);
  11. Личный кабинет;
  12. Страница профиля пользователя;
  13. Админпанель;

Админпанель

Админпанель

Консоль(Основной рабочий стол) — Выводит основную информацию по сайту, статистику и т.д.

Настройки > Сайт — Основные настройки сайта, модулей, дополнений и сервисов

Настройки > Главная страница — Позволяет настраивать блоки на главной странице пользовательской части сайта, тип блоков и их расположение, конструктор «лендинга» главной страницы.

Настройки > Меню — Работа со всеми меню сайта, позволяет редактировать пункты меню, ссылки и порядок их отображения.

Настройки > Редактор шаблонов — Веб-редактор, позволяющий прямо в админпанели вносить изменения в HTML шаблоны основной части сайта.

Настройки > Переменные шаблона — Возможность создавать и редактировать переменные и их значения используемые в шаблонах сайта, без непосредственного редактирования самих шаблонов.

Настройки > Свои стили — Редактирование стилей оформления шаблона сайта без изменения CSS кода вручную, назначения цветов и изображений для элементов сайта.

Настройки > СЕО — Настройка META данных для страниц сайта, описание, ключевые слова и заголовки страниц.

Система > Резервное копирование  — Позволяет создавать резервные копии базы данных с последующим скачиванием.

Система > Журнал событий — Отображение всех значимых событий на сайте, действий пользователей.

Сообщество > Пользователи — Просмотр списка пользователей, с возможностью редактирования данных их аккаунта;

Сообщество > E-Mail подписчики — Вывод списка E-Mail подписавшихся пользователей на рассылку сайта, возможность экспорта в Excel, а также рассылки по базе.

Контент > Страницы — Создание и редактирование страниц сайта, публикация новостей и статей, размещение информации, а также загрузка изображений и прочей медиа информации на сайт. Настройка ЧПУ страниц и многое другое.

Контент > Категории — Категории страниц на сайте(рубрики), создание и редактирование.

Контент > Комментарии — Работа с пользовательскими комментариями, модерация, редактирование, удаление.

Контент > Опросы — Создание и проведение опросов на сайте, просмотр результатов проведенных опросов.

Контент > Слайдер — Создание и размещение слайдера на сайте, слайдер это блок на странице сайта с меняющимся в определенный период времени контентом.

Контент > Форум — Работа со встроенным форум, создание разделов и тем, добавление описания.

Контент > Отзывы — Работа с отзывами, оставленными пользователями на сайте, модерация и удаление.

Контент > Города и регионы — Встроенная база стран, регионов и городов по ним, в комплект поставки входят страны: россия, Украина и Белоруссия.

Контент > Справочник валют — Отображения списка котировок валют(более тридцати), со встроенным парсером актуальных котировок по ЦБ.

Контент > Всплывающие окна — Функционал позволяющий создавать и редактировать всплывающие окна на сайте, как информационные, так и с возможностью предложения пользователям подсписки на емаил расссылки.

Инструменты > Реклама на сайте — Управление рекламными блоками на сайте, размещение баннеров, ссылок, произвольного HTM/JS кода в определенных частях сайта.

Инструменты >Рассылки — Проведение E-Mail рассылок пользователям сайта, в том числе по произвольному списку E-Mail адресов.

Инструменты >Рассылки СМС — Возможность осуществлять СМС рассылки пользователям, поддержка нескольких СМС шлюзов, возможность выборки по группам пользователей и указанием своего списка телефонных номеров.

Разработка > Генератор компонентов — Позволяет создавать новые разделы на сайте, всего в несколько кликов, удобно для разработки нового функционала. Указывается название раздела, тип контента(таблица или форма), а также ряд дополнительных параметров(постраничная разбивка, строка поиска, возможность добавления/редактирования/удаления данных, поддержка AJAX), а также создание таблицы в БД с предварительной настройках столбцов. Данный функционал, позволяет быстро создавать заготовки разделов на сайте, которые останется только подогнать под свои нужны — непосредственно в самом коде скриптов. Вместо того, чтобы каждый раз писать один и тот же код.

Набор классов

Access — Класс обеспечивающий авторизацию и регистрацию на сайте, а также позволяющий работать с данными пользователя.
Antiddos — Класс обеспечивающий защиту от DDOS атак на уровне скрипта.
Cache — Статические функции работы с кешем.
Calendar — Работа с датами, числами, названиями месяцев.
Captcha — Генерация и проверка кода при отправке форм, проверка что пользователь не робот.
Comments — Вывод списка комментариев и формы отправки комментария, удаление комментариев.
Component — Базовый класс, от которого наследуются классы компонентов разделов сайта, включат в себя ряд универсальных  функция работы с компонентами. Компонент — это раздел сайта, может состоять из нескольких страниц.
Core — Основной(самый главный) класс фреймворка, все запросы проходят через него, в нем создаются все основные рабочие объекты, в том числе работы с БД и шаблона сайта;
Curl — Работа с CURL, загрузка данных по URL.
DB
— Работа с базой данных MySQL, используется драйвер PDO.
DBMySQLi — Работа с базой данных MySQL, используется драйвер MySQLi.
DBMySQL — Работа с базой данных MySQL, используется драйвер MySQL.
Dbug — Вывод содержимое переменных в удобном, читаемом формате, удобный инструмент для отлаживания скриптов.
GetImage — Загрузка изображений средствами CURL с удаленного сервера, с проверкой MIME Type и сохранением на диск.
Graph — Создание и работа с графиками.
IDNA Convert — Работа с кириллическими доменами, преобразование в PunyCode и т.д.
Image — Работа с изображениями, генерация WebP, масштабирование, наложение водяного знака.
JavaScriptPacker — Минификация и обфускация отдаваемого JS кода.
Location — Работа с базой стран, городов и регионов.
Mail — Отправка почтовых сообщений по средствам PHP Mail или SMTP.
MailStec — Отложенная отправка E-Mail, отправка «порциями», с целью снижение нагрузки на сервер.
Module — Базовый класс, от которого наследуются классы модулей, включат в себя ряд универсальных  функция работы с моделями. Модель — это блок контента, выводимый на странице сайта.
Packer — Упаковка и обфускация JS, минимизация CSS, HTML, оптимизация изображений.
Pagenation — Постраничная разбивка данных
Prepare — Работа с входящими данными, переменными. Дополнение к PDO::Prepare, для гибкой работы в некоторых случаях.
PCLZIP — Работа с ZIP архивами. Архивация, распаковка, навигация внутри архива.
Route — Маршрутизация, разбивка запроса на компонент, секцию и переменные.
RSS — Генерация RSS ленты.
SendSMS — Отправка СМС, работа с несколькими СМС шлюзами.
SEO — Загрузка META данных СЕО, генерация ЧПУ URL из кириллической строки текста.
Server — Работа с окружающей средой сервера.
Settings — Загрузка конфигурации из БД и работа с нею.
Template — Работа с HTML шаблонами сайта, загрузка и вывод шаблона.
Text — Статические функции работы с текстом.
Timer — Подсчет времени выполнения скрипты с учетом времени затраченного на выполнение запросов к БД, удобно для отладки.
URL — Работа с адресами страниц сайта, URL, ЧПУ и прочее.
Verify — Проверка данных на корректность.

С подробным описанием классов и методов можно ознакомиться в документации к фреймворку.

Структура папок и базы данных

Папки структурированы следующим образом:

 
.admin/                        - Админпанель
    ⨽ theme/ 
        ⨽ component/           - Разделы(компоненты) админпанели
        ⨽ css/                 - CSS относящиеся к админпанели
        ⨽ js/                  - JavaScript относящийся к админпанели
        ⨽ image/               - Изображение относящиеся к админпанели
        ⨽ module/              - Модули админпанели
.backup/                        - Резервные копии БД созданные в админпанели, компонентом Резервное копировании
.cache/                         - Файлы кеша системы, запросов к БД, изображений, прочего
.lib/                           - PHP классы фреймворка, в том числе основное ядро системы, прочие библиотеки кода
.theme/                         - Основная(пользовательская) часть сайта
    ⨽ component/                - Разделы(компоненты)
    ⨽ css/                      - CSS оформления основной части сайта
    ⨽ js/                       - JavaScript основной части сайта
    ⨽ image/                    - Изображение основной части сайта
    ⨽ module/                   - Модули основной части сайта
.uploads/                       - Загруженные изображения и файлы на сайт

Таблицы в базе данных:

rche_activate                   - Коды активации аккаунтов при регистрации
rche_ads                        - Реклама на сайте
rche_blogs                      - Записи блогов пользователей
rche_category                   - Категории страниц
rche_cities                     - Города
rche_comments                   - Комментарии
rche_confirm                    - Коды проверки, при восстановлении пароля
rche_countries                  - Страны
rche_currency                   - Котировки валют
rche_fiddlers                   - Email подписчики
rche_forum                      - Форумы
rche_forum_topic                - Темы форума
rche_group                      - Группы пользователей
rche_log                        - Логирование
rche_mainpage                   - Главная страница
rche_mainpage_var               - Переменные главной страницы
rche_menu                       - Меню сайта
rche_menu_link                  - Ссылки в меню сайта
rche_message                    - Сообщения на сайте
rche_news                       - Страницы
rche_order                      - Таблица заказов
rche_partner                    - Партнерская программа
rche_payments                   - Платежи
rche_popups                     - Всплывающие окна
rche_regions                    - Регионы
rche_reviews                    - Отзывы
rche_seo                        - Настройки СЕО
rche_settings                   - Настройки сайта
rche_slides                     - Слайдеры
rche_stecmail                   - Отложенная рассылка Емаил
rche_tags                       - Теги
rche_users                      - Пользователи
rche_vars                       - Переменные шаблона
rche_votes                      - Опросы
rche_votes_ip                   - Результаты опросов

Заключение

Я занимаюсь разработкой с 2009 года, с тех пор я написал множество CMS, таких как Совместные покупки, Спорт-прогнозы, Авто портал, Семейный портал, OsRealty недвижимость — и всё это стало возможным именно потому, что в самом начале своего пути, я создал свой, на то еще время простенький PHP фреймворк(тогда еще по методологии функционального программирования). За это время, я видел как появлялось множество сторонних решений и универсальных движков, которые в свою очередь брались за основу для создания сайтов и веб-приложений, большая же часть из них, как это не прискорбно, превратились в неповоротных монстров(порой на сотню МБ кода) или же напротив перестали развиваться и в конечном счете вообще были закрыты раз и навсегда. Я не раз видел, как владельцы сайтов, в том числе из списка моих клиентов, переносили свои проекты на новые движки и так по несколько раз. Что всегда сопровождалось простоями в бизнесе и большими издержками, в том числе на оплату работы веб-программистов. Пойти своим путем, создать свой Framework — это пожалуй наилучшее мое решение, принятое за последние, более чем десять лет. Затраченные силы и весь проделанный путь, однозначно стоили того! Что касается моего нового решения RChe PHP Framework, то я уверен у него большое будущее.

А что дальше?

RChe PHP Framework однозначно будет развиваться, обзаведется новым функционалом, будет оптимизироваться, будет улучшаться качество кода, а также его документация. Но самое главное, в скором будущем, мною будет разработано множество новых, уникальных проектов, которые будут строиться на платформе моего фреймворка, о чем я расскажу в своих следующих статьях, ведь работа уже во всю ведется!

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

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Оформить предзаказ
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка