<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ``` <?php namespace App\Tool; use Exception; class Functions { /** * 簡易簽名,防止數據被竄改:驗簽使用解析參數獲取同樣的data+約定的token 按同樣的方法簽名,然后與傳參的sign參數比對。如果不一樣則被串改 * * @param array $data 原始傳參 * @param string $token 雙方約定的加密秘鑰 * @return void */ public static function sign($data, $token){ if(isset($data['sign'])){ unset($data['sign']); } ksort($data, SORT_REGULAR); return substr(md5(http_build_query($data)), 6); } /** * 校驗簽名 * * @param array $params 原始傳參 * @param string $token 雙方約定的加密秘鑰 * @return void */ public static function checkSign($params){ if(isset($params['sign']) && $params['sign'] == self::sign($params)){ return $params; } return false; } /** * 接口成功返回 * * @param string $error_msg * @param array $data * @return void */ public static function success($error_msg='成功', $data=[]){ return [ 'code'=> \App\Tool\ErrorCode::SUCCESS, 'msg'=> $error_msg, 'data'=> $data ]; } /** * 接口失敗返回 * * @param string $error_msg * @param integer $error_code * @param array $data * @return void */ public static function fail($error_msg='失敗', $error_code, $data=[]){ # ...code 可以做失敗日志處理 // $route = Route::current(); $route = \Route::currentRouteAction(); $log_msg = $route.'=> '.$error_msg; \App\Tool\Log::write($log_msg, ['process', 'fail']); return [ 'code'=> $error_code, 'msg'=> $error_msg, 'data'=> $data ]; } /** * 將 時長秒 轉換成 時長 {d天H小時m分鐘s秒} 格式 * * @param integer $timelong * @return void */ public static function timelong2datelong($timelong=0){ $day = floor($timelong/86400); $left = $timelong%86400; $showDay = $day==0 ? "" : $day."天"; $hour = floor($left/3600); $left = $left%3600; $showHour = $hour==0 ? "" : $hour."時"; $minute = floor($left/60); $left = $left%60; $showMinute = $minute==0 ? "" : $minute."分"; $show = $showDay . $showHour . $showMinute . $left."秒"; return $show; } /** * @desc 下劃線字符串轉成小駝峰 to_from => toFrom * @param $str * @return string */ public static function underlineToUcFirst($str):string { if(!is_string($str)){ return ''; } $result = ''; $temp = explode('_',$str); $first = array_key_first($temp); foreach($temp as $k=>$v){ if($k == $first){ $result .= strtolower($v); }else{ $result .= ucfirst($v); } } return $result ?? ''; } /** * 將url中的querystring解析成kv數組 * * @param string $url * @return void */ public static function getQueryParams($url){ $queryParams = []; $parse = parse_url($url); if($parse['query']){ $kvs = explode("&", $parse['query']); if(!empty($kvs)){ foreach($kvs as $index => $kv){ list($k, $v) = explode("=", $kv); $queryParams[$k] = $v; } } } return $queryParams; } /** * 檢查指定字段是否設置或值為null,為空,是否設置默認值,特殊校驗 * * @param array $params 待校驗參數 * @param array $mustSetFields 必要參數集合 * @param array $notEmptyOrNullFields 非空非null參數集合,必須是mustSetFields的子集,因為先存在才有值的概念,否則回報index $field 未找到錯誤 * @param array $defaultParams 為空為null或未設置的 默認參數設置 * @param callable $callback 復雜校驗邏輯 * @return void */ public static function checkParams($params=[], $mustSetFields=[], $notEmptyOrNullFields=[], $defaultParams=[], $callback=null){ if(!is_array($params) || empty($params)){ throw new Exception("校驗參數必須為數組,且不能為空", ErrorCode::PARAMS_ERROR); } if(!is_array($mustSetFields)){ throw new Exception("校驗參照必須為數組", ErrorCode::PARAMS_ERROR); } if(!is_array($notEmptyOrNullFields)){ throw new Exception("非空非NULL參照必須為數組", ErrorCode::PARAMS_ERROR); } if(!is_array($defaultParams)){ throw new Exception("參數默認值配置必須為數組", ErrorCode::PARAMS_ERROR); } # 特殊邏輯處理邏輯 if(!is_null($callback)){ $callback($params); } # 必要參數邏輯 if(!empty($mustSetFields)){ foreach($mustSetFields as $field){ if(!isset($params[$field])){ throw new Exception("{$field} 必須", ErrorCode::PARAMS_ERROR); } } } # 非空非NULL參數邏輯 if(!empty($notEmptyOrNullFields)){ foreach ($notEmptyOrNullFields as $field) { if(is_null($params[$field]) || empty($params[$field])){ # 默認值邏輯 if(isset($defaultParams[$field])){ $params[$field] = $defaultParams[$field]; }else{ throw new Exception("{$field} 不能為空和Null", ErrorCode::PARAMS_ERROR); } } } } # 參數默認值邏輯 foreach ($defaultParams as $field => $value) { if(!isset($params[$field]) || empty($params[$field]) || is_null($params[$field])){ $params[$field] = $value; } } return $params; } } ```
                  <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>

                              哎呀哎呀视频在线观看