nonagod / user-actions
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=7.4
- nonagod/service: ^2
This package is auto-updated.
Last update: 2025-06-18 20:39:31 UTC
README
Реализация серверной части абстракции "user actions", на языке php
.
Установка
composer require nonagod/user-actions
Инициализация
composer require nonagor/user_actions
Использование
Примеры использования можно посмотреть в папке examples
.
Инициализация
Объект класса должен быть создан до вывода како-го либо контента и после определения всех нужных конструкций.
use \Nonagod\UserActions\Manager; global $UAManager; $UAManager = new Manager( $_SERVER['DOCUMENT_ROOT'] . '/examples/_resources/UAM');
__constructor( $path )
:
string $path
- абсолютный путь до папки с обработчиками действий
Замечание: Директорию с обработчиками желательно выносить за пределы сайта или закрывать от доступа пользователей.
Обработчики
<?php /** * @var Nonagod\UserActions\Manager $this */ $this->succeed("Выполнено"); $this->failed("ERROR", "Ошибка");
Замечание: Каждый обработчик обязательно должен вызывать соответствующий метод завершения.
Замечание:
Nonagod\UserActions\Manager
отлавливает\Nonagod\Exceptions\UserException
и самостоятельно вызываетfailed
. В таком случае, явный вызов в обработчике не требуется.
succeed( $answer_data = null )
:
Отправляет ответ об успешном завершение обработчика.
?mixed $answer_data
- произвольные данные, для дополнительной обработке на клиенте
failed( string $code, string $msg = null, $error_info = null )
:
Отправляет ответ об ошибке обработчика.
string $code
- код ошибки?string $msg
- краткое описание ошибки?mixed $error_info
- дополнительные данные для доп. обработки ошибки на клиенте
Запрос контента
<?php // ... some code global $UAManager $UAManager->defineStartOfContentPart('<part_name>'); // требуемый кусок страницы $UAManager->defineEndOfContentPart('<part_name>'); // ... more code
Замечание:
defineStartOfContentPart
иdefineEndOfContentPart
парные методы.
defineStartOfContentPart( $name )
:
Опеределяет начало запрашиваемой части контента.
string $name
- кодовое обозначение части страницы
defineEndOfContentPart( $name )
:
Опеределяет конец запрашиваемой части контента.
string $name
- кодовое обозначение части страницы
Форматы
Запрос:
{ user_action: "<название_действия>|buffer", // обязательный, действия которое нужно выполнить part: "<название_запрашиваемой_части_контента>", // обязательный, если действие buffer "<дополнительные_параметры>": "<значение>" // дополнительные, произвольные параметры требуемые для действий }
Успешный ответ:
{ status: true, result: "mixed", // произвольный, зависит от выполненного действия }
Ответ с ошибкой:
{ status: false, result: { code: "string", // обязательный, код ошибки msg: "string", // текстовое пояснение ошибки info: "mixed" // произвольный, дополнительные данные ошибки, если требуются } }
Дополнительные утверждения
- Логирование, капча и прочее, делается в обработчиках, где это необходимо.
ToDo
- Сделать отлов прочих (помимо
UserExceptions
) ошибок, их логирование и отдачу пользователя обобщающей ошибки ("Что-то пошло не так") - Подумать, может можно сделать для обработчиков свой класс, чтобы убрать рутину из обработчиков. (+ управлять валидацией и откатом)
- Заменить очистку активных буферов в методе
defineStartOfContentPart
/*for( $i = 0; $i < ob_get_level()+1; $i++ ) { $trashed_content = ob_get_clean(); unset($trashed_content); }*/ while( ob_get_length( )) { $trashed_content = ob_get_clean(); unset($trashed_content); }