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 相关文章推荐
mysql limit查询优化分析
Nov 12 PHP
PHP 写文本日志实现代码
May 18 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
php阳历转农历优化版
Aug 08 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 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
安装APACHE
2007/01/15 PHP
php生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
为javascript添加String.Format方法
2020/08/11 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python 生成器和迭代器的原理解析
2019/10/12 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
python将音频进行变速的操作方法
2020/04/08 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Python如何安装第三方模块
2020/05/28 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
高等教育学专业自荐书
2014/06/17 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
文明单位汇报材料
2014/12/24 职场文书
技术入股协议书
2016/03/22 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android