kong-zhi-qi.md 2.0 KB

控制器

命名约定

类名使用UpperCamelCase风格, XxxController,Controller结尾,文件名和类名保持一致,继承BaseController

方法actionXxx,action开头,参数固定为$args接收请求数据(等效于$REQUEST)。

示例:

// file: FooController.php
class FooController extends BaseController {
    public function actionBar($args) {
        // code
    }
}
登录态校验

重写$loginActions或者$ajaxLoginActions配置,区别在于校验失败返回数据格式不一样。

校验方法为User::checkLogin()项目各自实现。

示例:

protected $loginActions = [
    'foo', //不带action前缀
];

protected $ajaxLoginAction = [
    'bar',
];
参数校验

任何需要接受参数的方法都应该使用Param进行参数校验过滤,常用校验方法有Param::checkParamParam:checkParam2区别在于Param::checkParam2会删除没定义校验规则的参数。

实例:

public function actionFoo($args) {
    $rules = [
        'id' => ['int', 'desc' => '用户id'],
    ];
    Param::checkParam($rules, $args);
}
// input: id=123&name=solu
// output: $args = ['id' => 123, 'name' => 'solu'];

public function actionBar($args) {
    $rules = [
        'id' => ['int', 'desc' => '用户id'],
    ];
    Param::checkParam2($rules, $args);
}
// input: id=123&name=solu
// output: $args = ['id' => 123];
接口文档

接口文档是通过反射解析方法注释$rules参数校验规则自动生成,所以要求每个对外接口都要有相应注释。如果不想接口出现在文档可以添加@ignore注释。

示例:

/**
 * 测试接口
 * @author solu
 */
public function actionFoo($args) {
    $rules = [
        'id' => ['int', 'desc' => '用户id'],
    ];
    Param::checkParam2($rules, $args);
}

浏览测试环境//HOST/CONTROLLER/ACTION?doc=class 可预览文档。