Loading...
ImmyCms [Beta] | Immy FAQ
Немного информации о данном движке
Данная версия идет 0.01 [Выгрузка в скором времени]


Полное руководство для новичков по разработке и использованию хуков, плагинов, шапок и CSRF-защиты

1. Введение
Данное руководство предназначено для разработчиков, которые хотят расширить систему через создание плагинов, работу с хуками и использование механизмов безопасности, таких как CSRF-защита. Здесь подробно рассматриваются основные концепции и шаги, которые помогут новичкам эффективно работать с системой.

2. Хуки
**Хуки** (hooks) позволяют вставлять или изменять поведение системы без изменения её исходного кода. Это механизм расширения функционала системы, с помощью которого можно добавлять или изменять логику на разных этапах выполнения программы.

### Типы хуков
- **before_** — хук, который вызывается до какого-либо действия (например, до обработки формы).
- **after_** — хук, который вызывается после выполнения действия (например, после сохранения данных).
- **custom_** — произвольные хуки, которые могут быть созданы пользователем для добавления своей логики.

Пример использования хука:

php
// Регистрация хука
use AppCoreHook;

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"
]
}



### Реализация плагина:

php
namespace AppPluginsMyPlugin;

use AppCoreHook;

class MyPlugin {
public function init() {
// Регистрация хука
Hook::register('before_user_login', function($user) {
echo "Плагин: Пользователь {$user->name} пытается войти...";
});
}
}



### Подключение плагина:
Чтобы подключить плагин, создаём объект плагина и инициализируем его:

php
use AppPluginsMyPluginMyPlugin;

$plugin = new MyPlugin();
$plugin->init();



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

Пример регистрации хука для вывода данных в шапке:

php
use AppCoreHook;

Hook::register('display_header', function() {
echo '<div>Моя шапка с динамическим контентом</div>';
});

// Вызов хука в шаблоне
Hook::fire('display_header', []);



В шаблоне, например, в `header.php`:
php
<?= Hook::fire('display_header', []) ?>


5. Работа с CSRF-защитой
CSRF (Cross-Site Request Forgery) — это защита от атак, которые подменяют запросы от имени пользователя. В системе уже предусмотрен механизм CSRF-защиты.

Для использования CSRF-защиты в формах необходимо добавить скрытое поле с токеном в каждую форму, отправляющую данные.

Пример использования CSRF-защиты в форме:
php
<form method="post" action="/submit">
<?= csrf_token() ?>
<input type="text" name="user_data">
<button type="submit">Отправить</button>
</form>



**csrf_token()** генерирует уникальный токен, который проверяется при отправке формы. Если токен не совпадает, запрос отклоняется.

6. Пример работы с маршрутизацией
Маршруты определяют, как запросы будут обрабатываться системой. Каждый маршрут связан с контроллером и методом.

Пример маршрута:

php
$router->get('/user/{id}', 'UserController@show');
$router->post('/submit', 'FormController@submit');



Контроллеры отвечают за логику обработки запросов:

php
namespace AppControllers;

class UserController {
public function show($id) {
// Логика отображения пользователя
}
}

class FormController {
public function submit() {
// Логика обработки формы
}
}



7. Заключение
Теперь, когда ты знаешь основные принципы работы с системой — как использовать хуки, как создавать плагины, интегрировать шапку, работать с CSRF-защитой и маршрутизацией — ты можешь легко начать разрабатывать и расширять функциональность системы. Эти инструменты позволяют гибко адаптировать систему под любые нужды, не изменяя исходного кода.
------
89702_hello_module.zip (1.8 Kb)
Скачиваний: 2

________
посл. ред. 28.11.2025 в 02:33; всего 2 раз(а); by root
Текстовое описание, с более расширенной информацией
------
89703_side_system_guide.txt (7.3 Kb)
Скачиваний: 4
Онлайн: 1
Время:
Gen. 0.0859
(c) Bym.Guru 2010-2025