PHP模拟asp中response类实现方法


Posted in PHP onAugust 08, 2015

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
php heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
php判断当前用户已在别处登录的方法
Jan 06 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
PHP实现根据图片色界在不同位置加水印的方法
Aug 08 #PHP
PHP中使用curl伪造IP的简单方法
Aug 07 #PHP
smarty中常用方法实例总结
Aug 07 #PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 #PHP
PHP下载生成的csv文件及问题总结
Aug 06 #PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 #PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 #PHP
You might like
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript之锁定表格栏位
2007/06/29 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
Python实现发送email的几种常用方法
2014/08/18 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python中整数的缓存机制讲解
2019/02/16 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
护理学应聘自荐书范文
2014/02/05 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书