定制 nonagod/user-actions 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nonagod/user-actions

Composer 安装命令:

composer create-project nonagod/user-actions

包简介

README 文档

README

Реализация серверной части абстракции "user actions", на языке php.

  1. Установка
  2. Использование
  3. Подключение
  4. Форматы

Установка

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);
}

统计信息

  • 总下载量: 26
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-01-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固