Полное руководство для новичков по разработке и использованию хуков, плагинов, шапок и CSRF-защиты (PHP-сторона) 1. Введение Данное руководство предназначено для разработчиков, которые хотят расширить систему через создание плагинов, работу с хуками и использование механизмов безопасности, таких как CSRF-защита. Здесь подробно рассматриваются основные концепции и шаги, которые помогут новичкам эффективно работать с системой на **PHP-стороне**. 2. Хуки **Хуки** (hooks) позволяют вставлять или изменять поведение системы без изменения её исходного кода. Это механизм расширения функционала системы, с помощью которого можно добавлять или изменять логику на разных этапах выполнения программы. ### Типы хуков - **before_** — хук, который вызывается до какого-либо действия (например, до обработки формы). - **after_** — хук, который вызывается после выполнения действия (например, после сохранения данных). - **custom_** — произвольные хуки, которые могут быть созданы пользователем для добавления своей логики. Пример использования хука на PHP: ```php // Регистрация хука use App\Core\Hook; Hook::register('before_user_login', function($user) { echo "Пользователь {$user->name} пытается войти..."; }); // Вызов хука в другом месте Hook::fire('before_user_login', $user); ``` ### Важные методы: - **register(string $event, callable $callback)** — регистрирует обработчик для события. - **fire(string $event, array $context)** — вызывает все обработчики для события с передачей данных. 3. Создание плагинов **Плагины** — это способы расширения функционала системы с использованием хуков. Плагины могут быть легко интегрированы в систему, подключая свою логику и изменяя поведение приложения. ### Структура плагина: 1. **plugin.json** — метаданные плагина (название, описание, версии). 2. **Папка с логикой плагина** — контроллеры, хуки, маршруты. 3. **hooks.php** — регистрация хуков. ### Пример структуры плагина: ``` /plugins /my-plugin plugin.json MyPlugin.php hooks.php routes.php ``` ### Пример манифеста плагина (plugin.json): ```json { "name": "My Plugin", "description": "Описание плагина", "version": "1.0", "author": "Your Name", "hooks": [ "before_user_login", "after_user_login" ] } ``` ### Реализация плагина (MyPlugin.php): ```php namespace App\Plugins\MyPlugin; use App\Core\Hook; class MyPlugin { public function init() { // Добавление хука для события "перед логином пользователя" Hook::register('before_user_login', function($user) { echo "Плагин: Пользователь {$user->name} пытается войти..."; }); } } ``` ### Подключение плагина: Чтобы подключить плагин, создаём его экземпляр и инициализируем его. ```php use App\Plugins\MyPlugin\MyPlugin; $plugin = new MyPlugin(); $plugin->init(); ``` 4. Вывод данных в шапке Чтобы вывести данные из модуля или плагина в шапке сайта, можно использовать **хуки** для внедрения контента в нужное место в шаблоне. ### Регистрация хука для вывода данных в шапке: ```php use App\Core\Hook; Hook::register('display_header', function() { echo '
Моя шапка с динамическим контентом
'; }); ``` ### Вызов хука в нужном месте в PHP-шаблоне: ```php // В вашем шаблоне (например, в header.php): ``` 5. Работа с CSRF-защитой CSRF (Cross-Site Request Forgery) — это защита от атак, которые подменяют запросы от имени пользователя. В системе уже предусмотрен механизм CSRF-защиты. ### Генерация CSRF-токена: ```php // Генерация CSRF-токена $token = csrf_token(); ``` ### Добавление CSRF-токена в форму: ```php
``` ### Проверка CSRF-токена при отправке формы: ```php // Проверка токена на сервере if (!validate_csrf_token($_POST['_csrf_token'])) { // Обработка ошибки CSRF-атаки die("Ошибка CSRF-защиты!"); } ``` 6. Пример работы с маршрутизацией Маршруты определяют, как запросы будут обрабатываться системой. Каждый маршрут связан с контроллером и методом. ### Определение маршрута: ```php $router->get('/user/{id}', 'UserController@show'); $router->post('/submit', 'FormController@submit'); ``` ### Контроллер для маршрута: ```php namespace App\Controllers; class UserController { public function show($id) { $user = User::find($id); return view('user.show', ['user' => $user]); } } class FormController { public function submit() { // Логика обработки формы } } ``` 7. Заключение Теперь, когда ты знаешь основные принципы работы с системой — как использовать хуки, как создавать плагины, интегрировать шапку, работать с CSRF-защитой и маршрутизацией — ты можешь легко начать разрабатывать и расширять функциональность системы. Эти инструменты позволяют гибко адаптировать систему под любые нужды, не изменяя исходного кода.