pub trait BaseController: SzController {
// Provided methods
fn batch_validate(&self) -> bool { ... }
fn middlewares(&self) -> Vec<String> { ... }
fn initialize(&self) { ... }
fn validate(
&self,
data: &Value,
rules: &[(&str, &str)],
messages: &[(&str, &str)],
) -> Result<(), String> { ... }
}Expand description
控制器基础 trait(对齐 PHP app\BaseController)
PHP 继承链:BaseController → SzController → AddonsBaseController → 业务控制器。
Rust 等价:BaseController: SzController(trait 继承),业务控制器同时实现
BaseController 和 SzController(trait 继承自动传播)。
§PHP 对齐
| PHP 属性/方法 | Rust 等价 |
|---|---|
protected $request | 通过方法参数 req: Request<Body> 传入(见 SzController) |
protected $app | 通过 axum State<App> 提取器获取(不在 trait 中) |
protected bool $batchValidate = false | BaseController::batch_validate |
protected array $middleware = [] | BaseController::middlewares |
protected function initialize() {} | BaseController::initialize |
protected function validate(...) | BaseController::validate(占位,完整实现) |
§状态迁移说明
PHP BaseController 是 abstract class,包含状态字段($request/$app)。Rust 控制器
推荐无状态(每个请求通过参数传入 Request),因此本 trait 不持有状态,仅定义行为。
Provided Methods§
Sourcefn batch_validate(&self) -> bool
fn batch_validate(&self) -> bool
是否批量验证(对齐 PHP protected bool $batchValidate = false)
返回 true 时,validate 方法会收集所有错误后一次性返回;
返回 false 时,遇到第一个错误即返回。
Sourcefn middlewares(&self) -> Vec<String>
fn middlewares(&self) -> Vec<String>
控制器中间件列表(对齐 PHP protected array $middleware = [])
返回中间件标识符列表(如 ["auth", "cors"])。
实际中间件注册在中间件系统中处理。
Sourcefn initialize(&self)
fn initialize(&self)
初始化钩子(对齐 PHP protected function initialize() {})
在控制器实例化后、方法调用前执行。 子类可重写以执行初始化逻辑(如设置默认值、加载配置)。
§PHP 对齐
protected function initialize() {
// 子类重写
}Sourcefn validate(
&self,
data: &Value,
rules: &[(&str, &str)],
messages: &[(&str, &str)],
) -> Result<(), String>
fn validate( &self, data: &Value, rules: &[(&str, &str)], messages: &[(&str, &str)], ) -> Result<(), String>
数据验证(对齐 PHP protected function validate(...))
§PHP 对齐
protected function validate(array $data, $validate, array $message = [], bool $batch = false) {
// ... 完整验证逻辑
}§实现说明
将 rules 与 messages 转换为内部 Validate 构建器调用,
批量模式由 BaseController::batch_validate 决定(对齐 PHP $batch
参数默认值 false,但 Rust 通过 trait 方法覆盖以适配无状态控制器)。
§参数
data:待验证的数据rules:验证规则列表,元组格式(字段名, 规则字符串)- 例:
[("name", "require"), ("age", "require|integer|gt:0")]
- 例:
messages:错误消息列表,元组格式(规则键, 消息)- 例:
[("name.require", "名称必填"), ("age.integer", "年龄须为整数")]
- 例:
§返回
Ok(()):验证通过Err(String):验证失败,包含错误消息(批量模式下以;分隔多条错误)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".