Skip to content

Небольшой аналог Laravel но с легким весом и ограниченными параметрами

License

Notifications You must be signed in to change notification settings

AiserKz/MiniCms-php

Repository files navigation

📌 Mini-CMS

Лёгкая мини-CMS на PHP с поддержкой:

  • 🖥️ CLI-команд
  • 🤖 Telegram-бота
  • Кэширования

💡 Сейчас для теста используется простой лендинг блог-сайта. Главная страница: > Главная

Страница поста: Страница поста

Панель администратора: Панель администратора

Редактирование поста: Редактирование поста


📖 Документация

📦 Установка

git clone https://github.com/AiserKz/MiniCms-php.git
cd minicms
composer install
cp .env.example .env
  1. Отредактируйте файл .env и установите свои параметры.
  2. Настройте веб-сервер (Apache/Nginx) на папку public/.

⚙️ Конфигурация .env

Переменная Описание
APP_DEBUG Включить ли откладку в файлы
APP_URL Базовый URL сайта (например, /MiniCms/public)
APP_LOG_PATH Путь к лог файлу по умолчанию logs/logs.log
APP_LOG_ERROR_PATH Путь к лог файлу ошибки по умолчанию logs/error_log.log
DB_HOST Адрес БД
DB_NAME Название БД
DB_USER Пользователь БД
DB_PASS Пароль БД
DB_PORT Порт БД
TELEGRAM_BOT_TOKEN Токен Telegram-бота
TELEGRAM_BOT_WEBHOOK_URL Базовый URL для установки webhook

🖥️ CLI-команды

В проект встроен свой мини-консольный инструмент (аналог artisan в Laravel).

Запуск:

php cms <команда>

или (Linux/Mac, после chmod +x cms):

./cms <команда>
Команда Описание
migrate Запустить миграции
cache:clear Очистить кэш-файлы

📌 В будущем можно будет добавлять свои команды в папку commands/.


🗄️ Кэш

Система поддерживает файловый кэш (/cache/*.cache), который можно использовать для:

  • Хранения временных данных
  • Ускорения загрузки
  • Запоминания настроек

Очистка кэша:

php cms cache:clear

Валидация данных — класс Validator

Метод / Правило Описание Пример использования
make(array $data, array $rules) Создаёт экземпляр валидатора, запускает проверку и возвращает объект. $validator = Validator::make($data, $rules);
validate() Выполняет проверку каждого поля по заданным правилам. Внутренний метод, вызывается автоматически.
fails() Возвращает true, если валидация провалена (есть ошибки). if ($validator->fails()) { ... }
errors() Возвращает массив ошибок в формате ['поле' => ['ошибка1', 'ошибка2']]. $errors = $validator->errors();
Правило Описание Пример
required Поле обязательно для заполнения (не пустое) 'username' => 'required'
min:X Минимальная длина строки — X символов 'password' => 'min:6'
max:X Максимальная длина строки — X символов 'username' => 'max:20'
$data = [
  'username' => 'Jone',
  'password' => '12345',
];

$rules = [
  'username' => 'required|min:3|max:20',
  'password' => 'required|min:6',
];

$validator = Validator::make($data, $rules);

if ($validator->fails()) {
  $errors = $validator->errors();
  // Обработка ошибок
} else {
  // Данные прошли проверку, можно продолжать
}

🤖 Telegram Bot

Webhook Telegram автоматически устанавливается:

  • при первом запуске проекта
  • при изменении TELEGRAM_BOT_WEBHOOK_URL

Чтобы переустановить webhook — просто очистите кэш либо же она сама обновиться после смены TELEGRAM_BOT_WEBHOOK_URL.


📂 Структура проекта

Папка / Файл Назначение
core/ Ядро CMS
public/ Публичная папка для веб-доступа
core/cache/ Файлы кэша
views/ Шаблоны
logs/ Логи
Middleware/ Мидлвары
models/ Работа с таблицами БД
config/ Дополнительные настройки проекта
controllers/ Обработчики запросов
cms CLI-утилита

📜 Лицензия

MIT — свободно используйте, модифицируйте и распространяйте.


📦Основные команты и все хелперы которые могут понадобиться будут ниже

📦 Инициализация и окружение

Функция Назначение Пример
init() Загружает .env, запускает сессию, определяет текущий URI, фильтрует запросы к статике, вызывает initBot(). init();
initBot() Устанавливает Telegram webhook, если изменился URL. Использует кэш, чтобы не ставить повторно. initBot();

📝 Логи

Функция Назначение Пример
log_message($message, $type) Записывает сообщение в лог (info или error). log_message("Ошибка базы", "error");

🎨 Отображение и ссылки

Функция Назначение Пример
view($template, $data) Рендерит PHP-шаблон с переданными данными. view('home', ['title' => 'Главная']);
url($path) Формирует абсолютный URL относительно APP_URL. url('post/5');
asset($path) Формирует URL до файла в public/uploads с версией по времени модификации. asset('images/logo.png');
redirect($path) Перенаправляет пользователя и завершает скрипт. redirect('/login');

🐞 Отладка

Функция Назначение Пример
dd(...$vars) Красивый dump и остановка выполнения. dd($user, $posts);
dump(...$vars) Красивый dump без остановки. dump($config);

👤 Аутентификация

Функция Назначение Пример
auth() Проверяет, авторизован ли пользователь. if (auth()) {...}
user_id() Получает ID текущего пользователя. $id = user_id();
user_name() Получает имя пользователя или "Гость". echo user_name();
user_level() Получает уровень доступа (по умолчанию 1). if (user_level() > 1) {...}

🛡 Безопасность

Функция Назначение Пример
generate_csrf_token() Генерирует CSRF-токен и HTML-элемент <input>. <form><?= generate_csrf_token(); ?></form>
verify_csrf_token($token) Проверяет переданный CSRF-токен. if (!verify_csrf_token($_POST['csrf_token'])) {...}
is_floading($action_key, $seconds) Ограничение частоты действий. if (is_floading('comment', 30)) {...}

⚡ Flash-сообщения

Функция Назначение Пример
flash_modal($message, $errors, $type, $code) Отображает модальное окно и завершает выполнение. flash_modal('Ошибка сохранения');
flash_toast($message, $type) Устанавливает уведомление-тост в сессию. flash_toast('Успех!');

🗂 Кэш

Функция Назначение Пример
cache_path() Возвращает путь к папке кэша (создаёт при необходимости). $path = cache_path();
cache_set($key, $value) Сохраняет значение в кэш-файл. cache_set('token', '123');
cache_get($key, $default) Получает значение из кэша или возвращает $default. cache_get('token', '');
cache_has($key) Проверяет наличие кэш-файла. if (cache_has('token')) {...}
cache_delete($key) Удаляет кэш-файл. cache_delete('token');

About

Небольшой аналог Laravel но с легким весом и ограниченными параметрами

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published