控制器
最后更新于:2022-04-02 02:22:01
[TOC]
## 前言
所有实例中 writeJson 方法 已经修改
### writeJson
```
//base Controller
protected function writeJson($statusCode = 200, $msg = '', $result = []){
parent::writeJson($statusCode,[],$msg);
}
```
## onRequest 方法前置操作
```
function onRequest(?string $action): ?bool
{
if (parent::onRequest($action)) {
//判断是否登录
if (1/*伪代码*/) {
$this->writeJson(Status::CODE_UNAUTHORIZED, '', '登入已过期');
return false;
}
return true;
}
return false;
}
```
## afterAction 方法后置操作
## index
## actionNotFound
## onException 方法报错,统一走此方法
```
public function index(){
throw new \Exception("error!!!");
$this->writeJson(200,"asd3");
}
function onException(\Throwable $throwable): void
{
//直接给前端响应500并输出系统繁忙
$this->writeJson(500,'系统繁忙,请稍后再试 ');
}
```
## Validate 验证
### 验证类型
> [参考](https://www.easyswoole.com/Cn/Components/validate.html)
### 不封装
```
$validate = new Validate();
//验证必须且长度不大于 5
$validate->addColumn('name','姓名')->required()->lengthMax(5);
if (!$this->validate($validate)){
return $this->writeJson(400,$validate->getError()->__toString());
}
$this->writeJson(200,"success");
```
### 封装
> [参考](https://www.easyswoole.com/Cn/Components/validate.html)
```
//curl http://127.0.0.1:9501/sms?phone=123
public function sms(){
$phone = $this->request()->getRequestParam('phone');
$this->writeJson(200,"phone {$phone}");
}
public function onRequest(?string $action): ?bool{
$ret = parent::onRequest($action);
if($ret === false){
return false;
}
$v = $this->validateRule($action);
if($v){
$ret = $this->validate($v);
if($ret == false){
$this->writeJson(400,"{$v->getError()->getField()}@{$v->getError()->getFieldAlias()}:{$v->getError()->getErrorRuleMsg()}");
return false;
}
}
return true;
}
protected function validateRule(?string $action): ?Validate
{
$v = new Validate();
switch ($action){
case 'sms':{
$v->addColumn('phone','手机号')->required('不能为空')->length(11,'长度错误');
break;
}
}
return $v;
}
```
';