/** * 設置或者獲取當前的Header * @access public * @param string|array $name header名稱 * @param string $default 默認值 * @return string */ public function header($name = '', $default = null) {// 設置 或者 獲取 當前的 頭信息 if (empty($this->header)) {// 如果頭信息爲空 $header = [];// 準備一個空的頭信息容器, $server = $this->server ?: $_SERVER;// 去檢查一下server 的情況 foreach ($server as $key => $val) {// 把裏面的每一個 東西都拿出來 if (0 === strpos($key, 'HTTP_')) {// 進行對比 $key = str_replace('_', '-', strtolower(substr($key, 5)));// 替換 變成 頭信息 $header[$key] = $val;// 存放到頭信息 倉庫 } } if (isset($server['CONTENT_TYPE'])) {// 如果通過 服務器 設置了 內容倉庫 $header['content-type'] = $server['CONTENT_TYPE'];// 出發的東西就要用這個 } if (isset($server['CONTENT_LENGTH'])) {// 如果設置了 對應的 $header['content-length'] = $server['CONTENT_LENGTH'];// 長度 } $this->header = array_change_key_case($header);// 數組改變 key 值 大小寫 } if (is_array($name)) {// 如果是 拼合後 返回 return $this->header = array_merge($this->header, $name); } if ('' === $name) {// 如果 是空 return $this->header;// 返回 頭信息 } $name = str_replace('_', '-', strtolower($name));// 刪除 當前的 東西 return isset($this->header[$name]) ? $this->header[$name] : $default;// 返回是否設置的東西 } /** * 獲取變量 支持過濾和默認值 * @param array $data 數據源 * @param string|false $name 字段名 * @param mixed $default 默認值 * @param string|array $filter 過濾函數 * @return mixed */ public function input($data = [], $name = '', $default = null, $filter = null) {// 如果 輸入 跟 輸出 獲取輸入數據, 支持 過濾 和 默認值 if (false === $name) {// 獲取信息 如果 爲false 那麼 返回 數據 // 獲取原始數據 return $data; } $name = (string) $name;// 如果 有 key值 if ('' != $name) {// 如果 key 不爲空,解析 name // 解析name if (strpos($name, '/')) {// 如果 str 有這個格式 list($name, $type) = explode('/', $name);// 如果 列表 } else {// 否則 默認的類型 是 s $type = 's'; } // 按.拆分成多維數組進行判斷 foreach (explode('.', $name) as $val) {// 遍歷另外一種方式 if (isset($data[$val])) {// 如果 設置 $data = $data[$val]; } else {// 默認值 // 無輸入數據,返回默認值 return $default; } } if (is_object($data)) {// 如果是對象,直接返回 return $data; } }// 返回數據 // 解析過濾器 $filter = $filter ?: $this->filter;// 獲取 解析器 if (is_string($filter)) {// 如果字符串 $filter = explode(',', $filter); } else {// 否則 數組 $filter = (array) $filter; } $filter[] = $default;// 添加一個默認的,哈哈,反正要有一個才行 if (is_array($data)) {// 如果是 數據 array_walk_recursive($data, [$this, 'filterValue'], $filter);// 遍歷資源,並且強制轉換 reset($data);// 重置數據 } else {// 發送更多的數據 $this->filterValue($data, $name, $filter); } if (isset($type) && $data !== $default) {// 如果設置了 類型 並且 類型 不同與 默認的 // 強制類型轉換 $this->typeCast($data, $type);// 首先先是強制轉換 數據 } return $data;// 返回數據 } /** * 設置或獲取當前的過濾規則 * @param mixed $filter 過濾規則 * @return mixed */ public function filter($filter = null) { if (is_null($filter)) { return $this->filter; } else { $this->filter = $filter; } }// 過濾器設置
[李景山php]每天TP5-20170202|thinkphp5-Request.php-5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.