Blame view

天文台pc/daocheng-api/app/BaseController.php 2.05 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  <?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, string|array $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);
      }
  
  }