nonagod/user-actions

3.0.0 2022-05-18 13:25 UTC

This package is auto-updated.

Last update: 2024-09-18 18:37:02 UTC


README

使用 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

注意:defineStartOfContentPartdefineEndOfContentPart 是成对的方法。

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" // произвольный, дополнительные данные ошибки, если требуются
    }
}

其他声明

  • 日志记录、验证码等在需要的地方在处理器中完成。

待办事项

  • 捕获其他错误(除了 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);
}