文章抓取
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

126 lines
3.1 KiB

<?php
declare (strict_types = 1);
namespace app;
use think\App;
use think\exception\ValidateException;
use think\Validate;
/**
* 控制器基础类
*/
abstract class BaseController
{
/**
* Request实例
* @var \think\Request
*/
protected $request;
/**
* 应用实例
* @var \think\App
*/
protected $app;
/**
* 是否批量验证
* @var bool
*/
protected $batchValidate = false;
/**
* 控制器中间件
* @var array
*/
protected $middleware = [];
/**
* 构造方法
* @access public
* @param App $app 应用对象
*/
public function __construct(App $app)
{
$this->app = $app;
$this->request = $this->app->request;
// 控制器初始化
$this->initialize();
}
// 初始化
protected function initialize()
{}
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @return array|string|true
* @throws ValidateException
*/
protected function validate(array $data, $validate, array $message = [], bool $batch = false)
{
if (is_array($validate)) {
$v = new Validate();
$v->rule($validate);
} else {
if (strpos($validate, '.')) {
// 支持场景
[$validate, $scene] = explode('.', $validate);
}
$class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
$v = new $class();
if (!empty($scene)) {
$v->scene($scene);
}
}
$v->message($message);
// 是否批量验证
if ($batch || $this->batchValidate) {
$v->batch(true);
}
return $v->failException(true)->check($data);
}
// 获取数组指定key的value
function getValByKey(string $key, array $arr, $default = false)
{
return array_key_exists($key, $arr) ? $arr[$key] : $default;
}
// 应用公共文件
function ApiException($msg = '请求错误',$errorCode = 20000,$statusCode = 404)
{
// abort($errorCode, $msg,[
// 'statusCode' => $statusCode
// ]);
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Headers:content-type,token');
header('Access-Control-Request-Method:GET,POST,DELETE');
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'OPTIONS') {
exit;
}
throw new \app\lib\exception\BaseException(['code' => $errorCode, 'message' => $msg, 'data' => [
'statusCode' => $statusCode
]]);
}
// 成功返回
function showSuccess($data = '',$msg = 'ok',$code = 200){
return json([ 'msg' => $msg, 'data' => $data,'code'=>$code],$code);
}
function showError($msg = 'error',$code = 201){
return json([ 'msg' => $msg ],$code);
}
}