45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:PHP如何实现模拟asp中response类?

PHP如何实现模拟asp中response类?

2015-08-31 15:56:53 来源:www.45fan.com 【

PHP如何实现模拟asp中response类?

本文实例讲述了PHP模拟asp中response类的方法。分享给大家供大家参考。具体如下:

习惯了asp或是asp.net开发的人, 他们会经常用到response类,这个类用于处理客户端的响应,可以实现跳转,输出等功能. 在php中没有这个类,但是确实可以通过函数来模拟这个类.

/* 
* 类用途: 实现类似于asp中的response功能 
*/
final class Response { 
 private $headers = array(); 
 private $output; 
 private $level = 0; 
 public function addHeader($key, $value) { 
  $this->headers[$key] = $value; 
 } 
 public function removeHeader($key) { 
  if (isset($this->headers[$key])) { 
   unset($this->headers[$key]); 
  } 
 } 
 public function redirect($url) { 
  header('Location: ' . $url); 
  exit; 
 } 
 public function setOutput($output, $level = 0) { 
  $this->output = $output; 
  $this->level = $level; 
 } 
 private function compress($data, $level = 0) { 
  if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) { 
   $encoding = 'gzip'; 
  } 
  if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== FALSE)) { 
   $encoding = 'x-gzip'; 
  } 
  if (!isset($encoding)) { 
   return $data; 
  } 
  if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) { 
   return $data; 
  } 
  if (headers_sent()) { 
   return $data; 
  } 
  if (connection_status()) { 
   return $data; 
  } 
  $this->addHeader('Content-Encoding', $encoding); 
  return gzencode($data, (int)$level); 
 } 
 public function output() { 
  if ($this->level) { 
   $ouput = $this->compress($this->output, $this->level); 
  } else { 
   $ouput = $this->output; 
  }  
  if (!headers_sent()) { 
   foreach ($this->headers as $key => $value) { 
    header($key . ': ' . $value); 
   } 
  } 
  echo $ouput; 
 } 
}

希望本文所述对大家的php程序设计有所帮助。


本文地址:http://www.45fan.com/bcdm/19512.html
Tags: PHP 模拟 asp
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部