Лёгкая мини-CMS на PHP с поддержкой:
- 🖥️ CLI-команд
- 🤖 Telegram-бота
- ⚡ Кэширования
💡 Сейчас для теста используется простой лендинг блог-сайта. Главная страница: >
git clone https://github.com/AiserKz/MiniCms-php.git
cd minicms
composer install
cp .env.example .env
- Отредактируйте файл
.env
и установите свои параметры. - Настройте веб-сервер (Apache/Nginx) на папку
public/
.
Переменная | Описание |
---|---|
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 |
В проект встроен свой мини-консольный инструмент (аналог artisan в Laravel).
php cms <команда>
или (Linux/Mac, после chmod +x cms
):
./cms <команда>
Команда | Описание |
---|---|
migrate | Запустить миграции |
cache:clear | Очистить кэш-файлы |
📌 В будущем можно будет добавлять свои команды в папку
commands/
.
Система поддерживает файловый кэш (/cache/*.cache
), который можно использовать для:
- Хранения временных данных
- Ускорения загрузки
- Запоминания настроек
Очистка кэша:
php cms cache:clear
Метод / Правило | Описание | Пример использования |
---|---|---|
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 {
// Данные прошли проверку, можно продолжать
}
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'); |