• 常用登陆验证后端BaseController.php


     1 <?php
     2 declare (strict_types = 1);
     3 
     4 namespace app\admin;
     5 
     6 use think\App;
     7 use think\exception\ValidateException;
     8 use think\Validate;
     9 
    10 /**
    11  * 控制器基础类
    12  */
    13 abstract class BaseController
    14 {
    15     /**
    16      * Request实例
    17      * @var \think\Request
    18      */
    19     protected $request;
    20 
    21     /**
    22      * 应用实例
    23      * @var \think\App
    24      */
    25     protected $app;
    26 
    27     /**
    28      * 是否批量验证
    29      * @var bool
    30      */
    31     protected $batchValidate = false;
    32 
    33     /**
    34      * 控制器中间件
    35      * @var array
    36      */
    37     protected $middleware = [];
    38 
    39     /**
    40      * 构造方法
    41      * @access public
    42      * @param  App  $app  应用对象
    43      */
    44     public function __construct(App $app)
    45     {
    46         $this->app     = $app;
    47         $this->request = $this->app->request;
    48 
    49         // 控制器初始化
    50         $this->initialize();
    51     }
    52 
    53     // 初始化
    54     protected function initialize()
    55     {}
    56 
    57     /**
    58      * 验证数据
    59      * @access protected
    60      * @param  array        $data     数据
    61      * @param  string|array $validate 验证器名或者验证规则数组
    62      * @param  array        $message  提示信息
    63      * @param  bool         $batch    是否批量验证
    64      * @return array|string|true
    65      * @throws ValidateException
    66      */
    67     protected function validate(array $data, $validate, array $message = [], bool $batch = false)
    68     {
    69         if (is_array($validate)) {
    70             $v = new Validate();
    71             $v->rule($validate);
    72         } else {
    73             if (strpos($validate, '.')) {
    74                 // 支持场景
    75                 [$validate, $scene] = explode('.', $validate);
    76             }
    77             $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate);
    78             $v     = new $class();
    79             if (!empty($scene)) {
    80                 $v->scene($scene);
    81             }
    82         }
    83 
    84         $v->message($message);
    85 
    86         // 是否批量验证
    87         if ($batch || $this->batchValidate) {
    88             $v->batch(true);
    89         }
    90 
    91         return $v->failException(true)->check($data);
    92     }
    93 }
  • 相关阅读:
    洛谷7月月赛 B 题解
    undone
    树剖学习
    关于两周后noip---小计划
    线段树技巧练习--GSS1
    链式前向星存图及注意要点
    错题集合
    树上差分问题
    2020暑假学习内容整理及后续计划
    安利大佬博客
  • 原文地址:https://www.cnblogs.com/silen0119/p/16138990.html
Copyright © 2020-2023  润新知