normalize_header($value); if ($replace) { foreach ($this->_headers as $key => $header) { if ($name == $header['name']) { unset($this->_headers[$key]); } } } $this->_headers[] = array( 'name' => $name, 'value' => $value, 'replace' => $replace ); return $this; }//End Function /* * get header * @param string $name * @param array &$header * @return boolean */ /** * 获取_header * @param mixed $name name * @param mixed $header header * @return mixed 返回结果 */ public function get_header($name, &$header) { foreach($this->_headers AS $row){ if(strtolower($row['name']) == strtolower($name)){ $header = $row; return true; } } return false; }//End Function /* * get all headers * @return array */ public function get_headers() { return $this->_headers; }//End Function /* * clean all headers * @return self */ /** * clean_headers * @return mixed 返回值 */ public function clean_headers() { $this->_headers = array(); return $this; }//End Function /* * set redirect * @param string $url * @param string $code * @return self */ public function set_redirect($url, $code = 302) { $this->set_header("Location", $url, true) ->set_http_response_code($code); return $this; }//End Function /* * set response code * @param string $code * @return self */ /** * 设置_http_response_code * @param mixed $code code * @return mixed 返回操作结果 */ public function set_http_response_code($code) { $this->_is_redirect = ($code >=300 && $code <= 307) ? true : false; $this->_http_response_code = $code; return $this; }//End Function /* * get http response code * @return string */ public function get_http_response_code() { return $this->_http_response_code; }//End Function /* * is redirect * @return boolean */ /** * is_redirect * @return mixed 返回值 */ public function is_redirect() { return $this->_is_redirect; }//End Function /* * set raw header * @param string $value * @return self */ public function set_raw_header($value) { if(substr($value, 0, 8) == 'Location'){ $this->_is_redirect = true; } $this->_raw_headers[] = $value; return $this; }//End Function /* * get raw header * @return array */ /** * 获取_raw_headers * @return mixed 返回结果 */ public function get_raw_headers() { return $this->_raw_headers; }//End Function /* * clean raw header * @return self */ public function clean_raw_headers() { $this->_raw_headers = array(); return $this; }//End Function /* * claen header & raw header * @return self */ /** * clean_all_headers * @return mixed 返回值 */ public function clean_all_headers() { $this->clean_headers()->clean_raw_headers(); return $this; }//End Function /* * send headers * @return self */ public function send_headers() { if(!count($this->_raw_headers) && !count($this->_headers) && (200 == $this->_http_response_code)){ return $this; } $http_code_sent = false; foreach($this->_raw_headers AS $header){ if($this->_http_response_code && !$http_code_sent){ header($header, true, $this->_http_response_code); $http_code_sent = true; }else{ header($header); } } foreach($this->_headers AS $header){ if($this->_http_response_code && !$http_code_sent){ header($header['name'] . ': ' . $header['value'], $header['replace'], $this->_http_response_code); $http_code_sent = true; }else{ header($header['name'] . ': ' . $header['value'], $header['replace']); } } if (!$http_code_sent) { header('HTTP/1.1 ' . $this->_http_response_code); $http_code_sent = true; } return $this; }//End Function /** * 设置_body * @param mixed $body body * @return mixed 返回操作结果 */ public function set_body($body) { $this->_bodys[] = $body; return $this; }//End Function /** * 获取_bodys * @return mixed 返回结果 */ public function get_bodys() { return $this->_bodys; }//End Function /** * clean_bodys * @return mixed 返回值 */ public function clean_bodys() { $this->_bodys = array(); return $this; }//End Function /** * send_bodys * @return mixed 返回值 */ public function send_bodys() { echo join('\n', $this->_bodys); }//End Function }//End Class