<?php
declare(strict_types = 1);
namespaceapp;
usethink\App;
usethink\exception\ValidateException;
usethink\Validate;
/**
* 控制器基础类
*/
abstractclassBaseController
{
/**
* 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 应用对象
*/
publicfunction__construct(App$app)
{
$this->app =$app;
$this->request =$this->app->request;
// 控制器初始化
$this->initialize();
}
// 初始化
protectedfunctioninitialize()
{}
/**
* 验证数据
* @access protected
* @param array $data 数据
* @param string|array $validate 验证器名或者验证规则数组
* @param array $message 提示信息
* @param bool $batch 是否批量验证
* @return array|string|true
* @throws ValidateException
*/
protectedfunctionvalidate(array$data, string|array$validate,array$message= [], bool$batch= false)
{
if(is_array($validate)) {
$v=newValidate();
$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);
}
// 重写__call部分
publicfunction__call(string$name,array$arguments)
{
// TODO: Implement __call() method.
returnshow(config("status.action_not_found"),"找不到{$name}方法",null,404);
}
}
|