<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 請求驗證器 驗證器是為了驗證請求參數是否合法,根據需要配置不同的驗證器,如果驗證不通過會自動返回錯誤信息。 目錄 `app\Requests` 示例: ```php /** * 商品列表請求驗證 */ namespace App\Requests\Goods; use App\Requests\Request; class GoodsListRequest extends Request { /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // 'cateid' => [ 'integer', 'min' => 0, 'max' => MYSQL_INT_MAX, 'required' => false, 'default' => 0, 'label' => '商品分類' ], // 'grade' => [ 'enum', 'options' => [ 1, 2, 3, 4, 5, 6 ], 'required' => true, 'default' => 0, 'label' => '年級' ], 'state' => [ 'enum', 'options' => [ 0, 1 ], 'required' => true, 'default' => 1, 'label' => '獲取全部:[0全部,1正常]' ], 'psize' => [ 'integer', 'min' => 1, 'max' => MYSQL_INT_MAX, 'required' => false, 'default' => 20, 'label' => '每頁顯示條目' ], 'skip' => [ 'integer', 'min' => 1, 'max' => MYSQL_INT_MAX, 'required' => false, 'default' => 0, 'label' => '跳過多少條' ], 'gids' => [ 'string', 'min' => 0, 'max' => 255, 'required' => false, 'default' => '', 'label' => '商品id集合' ], ]; } } ``` 驗證器核心代碼: ```php namespace App\Fend\Http; class FormRequest { /** * 待驗證參數 * * @var array */ protected $data = []; /** * 安全參數 * * @var array */ protected $safetyData = []; /** * 驗證規則 * * @var */ protected $rules; /** * 錯誤消息 * * @var null */ protected $errorMessage = []; /** * 構造方法 * * @param array $data */ public function __construct($data = []) { $this->data = $data; } /** * 請求提示 * * @return string */ public function notes() { return ''; } /** * 設置數據 * * @param $data */ public function setData($data) { $this->data = $data; } /** * 設置規則 * * @param $rules */ public function setRules($rules) { $this->rules = $rules; } /** * 獲取全部數據 */ public function all() { return $this->safetyData; } /** * 獲取驗證規則 * * @return mixed */ protected function getRules() { if( method_exists($this, 'rules')){ $this->rules = $this->rules(); } return $this->rules; } /** * 驗證參數 * * @param array $data * @return bool */ public function validate($data = []) { if( !empty($data) ){ $this->data = $data; } foreach($this->getRules() as $key => $rule){ $this->selectAction(getValue($this->data, $key, null), $key, $rule[0], $rule); } return empty($this->errorMessage); } /** * 獲取錯誤信息 * * @return null */ public function getMessage() { return $this->errorMessage; } /** * 根據規則類型選擇驗證方法. * * @param $value * @param $key * @param $action * @param $vParams * @return bool|null */ private function selectAction($value, $key, $action, $vParams){ $newValue = $this->run($action,$key,$value,$vParams); if($newValue === false) { // 驗證失敗,記錄錯誤信息 $this->errorMessage[$key] = "`{$key}` params error."; }else{ $this->safetyData[$key] = addslashes($newValue); } return $newValue; } /** * 執行驗證 * * @param $action * @param $key * @param $value * @param $vParams * @return bool|null */ private function run($action,$key,$value,$vParams){ $newValue = null; switch (strtolower($action)){ case 'required': $newValue = $this->vRequired($value); break; case 'tel': $newValue = $this->vTel($value,$vParams['required'],$vParams['default']); break; case 'uuid': $newValue = $this->vUuid($value,$vParams['required'],$vParams['default']); break; case 'integer': $newValue = $this->vInteger($value,$vParams['min'],$vParams['max'],$vParams['required'],$vParams['default']); break; case 'string': $newValue = $this->vString($value,$vParams['min'],$vParams['max'],$vParams['required'],$vParams['default']); break; case 'array': $newValue = $this->vArray($value,$vParams['min'],$vParams['max'],$vParams['required'],$vParams['default']); break; case 'json': $newValue = $this->vJson($value,$vParams['required'],$vParams['default']); break; case 'email': $newValue = $this->vEmail($value,$vParams['required'],$vParams['default']); break; case 'mobile': $newValue = $this->vMobile($value,$vParams['required'],$vParams['default']); break; case 'match': $newValue = $this->vMatch($value,$vParams['pattern'],$vParams['required'],$vParams['default']); break; case 'enum': $newValue = $this->vEnum($value,$vParams['options'],$vParams['required'],$vParams['default']); break; case 'version': $newValue = $this->vVersion($value,$vParams['required'],$vParams['default']); break; case 'file': $newValue = $this->vFile($key,$vParams['extensions'],$vParams['min_size'],$vParams['max_size'],$vParams['required'],$vParams['default']); break; default: $this->errorMessage = "`{$action}` Rules Action Undefined."; break; } return $newValue; } /** * 檢查參數知否為空 * * @param $value * @return bool */ protected function vRequired($value){ return !empty($value); } /** * 驗證電話號碼格式(固定電話) * * @param $value * @param $required * @param $default * @return bool */ protected function vTel($value, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if(verify_tel($value)){ return $value; } return false; } /** * 驗證uuid格式 * * @param $value * @param $required * @param $default * @return bool */ protected function vUuid($value, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}$/'; if(preg_match($pattern, $value)){ return $value; } return false; } /** * 驗證數字參數范圍 * * @param $value * @param $min * @param $max * @param $required * @param $default * @return bool */ protected function vInteger($value, $min, $max, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return (int)$value; } if( is_numeric($value) && ($value >= $min) && ($value <= $max) ){ return $value + 0; // 轉換為數字,防止小數未使用(int) } return false; } /** * 驗證字符串參數長度范圍 * * @param $value * @param $min * @param $max * @param $required * @param $default * @return bool */ protected function vString($value, $min, $max, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if( is_string($value) && ($len = mb_strlen($value)) && ($len >= $min) && ($len <= $max) ){ return $value; } return false; } /** * 驗證數組長度 * @param $value * @param $min * @param $max * @param $required * @param $default * @return bool */ protected function vArray($value, $min, $max, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if( is_array($value) && ($len = count($value)) && ($len >= $min) && ($len <= $max) ){ return $value; } return false; } /** * 檢查是否是一個合法的 json * * @deprecated * @param $value * @param $required * @param $default * @return bool */ protected function vJson($value, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if(isJson($value)){ return $value; } return false; } /** * 驗證郵箱格式 * * @param $value * @param $required * @param $default * @return bool */ protected function vEmail($value, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if(isMail($value)){ return $value; } return false; } /** * 驗證手機號格式 * * @param $value * @param $required * @param $default * @return bool */ protected function vMobile($value, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $preg = '#^13[0-9]\d{8}$|^14[0-9]\d{8}|^15[0-9]\d{8}$|^17[0-9]\d{8}$|^18[0-9]\d{8}$#'; return preg_match($preg, $value) ? $value : false; } /** * 版本號驗證 * * @param $value * @param $required * @param $default * * @return bool */ protected function vVersion($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{2}\.[0-9]{2}\.[0-9]{3,6}$/'; if(preg_match($pattern, $value)){ return $value; } return false; } /** * 算法版本號驗證 * * @param $value * @param $required * @param $default * * @return bool */ protected function vVersionByAlgorithm($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{3,6}$/'; if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * 藍牙庫版本號 * * @param $value * @param $required * @param $default * @return bool */ protected function vVersionByBluetooth($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,6}$/'; if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * 固件版本號驗證 * * @param $value * @param $required * @param $default * * @return bool */ protected function vVersionByFirmware($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{2}\.[0-9]{2}\.[0-9]+$/'; if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * APP版本號驗證 * * @param $value * @param $required * @param $default * * @return bool */ protected function vVersionByApp($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,6}$/'; if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * 硬件版本號驗證 * * @param $value * @param $required * @param $default * * @return bool */ protected function vVersionByHardware($value,$required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $pattern = '/^[0-9]{2}\.[0-9]{2}$/'; if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * 正則驗證 * * @param $value * @param $pattern * @param $required * @param $default * @return bool */ protected function vMatch($value, $pattern, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } if(is_string($value) && preg_match($pattern, $value)){ return $value; } return false; } /** * Enum 驗證 * * @param $value * @param $options * @param $required * @param $default * @return bool */ protected function vEnum($value, $options, $required, $default){ if(empty($value) && $required === false){ $value = $default; } if( !$required && empty($value)){ return $value; } $options = array_map(function($val){ return (string)$val; }, $options); if(in_array((string)$value, $options, true)){ return is_numeric($value) ? $value + 0 : $value; } return false; } /** * 上傳文件驗證 * * @param $paramsKey * @param $suffix * @param $min_size * @param $max_size * @param $required * @param $default * @return bool|mixed|string */ protected function vFile($paramsKey, $suffix, $min_size, $max_size, $required, $default){ $storage = getValue($_FILES, $paramsKey); if( !$required && empty($storage)){ return $storage; } // 檢查是否必填項,如果不允許或者有值進入驗證 if( empty($storage) ){ return false; } // 檢查是否正確 $extension = pathinfo( $storage['name'],PATHINFO_EXTENSION ); if(!in_array($extension, $suffix)){ return false; // 文件類型不對 } $size = $storage['size']; if( !($size > $min_size && $size < $max_size) ){ return false; // 文件大小錯誤 } return $storage; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看