Skip to main content

Module controller

Module controller 

Source
Expand description

控制器模块 — SzController trait

对齐 PHP app\SzController(abstract class extends BaseController)。 继承链:BaseController → SzController → AddonsBaseController → 业务控制器。

§PHP 对齐

PHP 方法签名Rust 等价
renderJson($code=1, $msg='', $data=[])返回 compact('code','msg','data') 数组SzController::render_json 返回 Value::Object
renderSuccess($msg='success', $data=[])json(renderJson(1, $msg, $data))SzController::render_success 返回 Response
renderError($msg='error', $data=[], $code=0)json(renderJson($code, $msg, $data))SzController::render_error 返回 Response
postData($key=null)$this->request->param(...)SzController::post_data / SzController::post_data_by_key
getData($key=null)$this->request->get(...)SzController::get_data / SzController::get_data_by_key

§参数顺序差异

PHP renderSuccess($msg, $data) 与 Rust ApiResponse::success(data, msg) 参数顺序相反。 本 trait 严格遵循 PHP 顺序(msg 在前),内部调用 ApiResponse 时调换参数。

§Request 传递

PHP 通过 $this->request 在控制器内部访问当前请求;Rust 控制器无状态, 由 handler 在每次请求时将 Request<Body> 作为参数传入 trait 方法。

§async trait

使用 Rust 1.75+ 原生 async fn in trait。trait 暂不支持 dyn SzController; 若未来需要 trait object,可改用 #[async_trait] 宏(届时增加 async-trait 依赖)。

Structs§

RouteInfo
路由信息(对齐 PHP addons\BaseController 的 $controller/$action/$routeUri/$group)
UserInfo
用户信息(对齐 PHP $this->user 数组中的关键字段)

Traits§

AddonsBaseController
addons 控制器基础 trait(对齐 PHP addons\BaseController
BaseController
控制器基础 trait(对齐 PHP app\BaseController
SzController
控制器基础 trait(对齐 PHP app\SzController