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中使用Oracle数据库(3)
Oct 09 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
PHP教程 基本语法
Oct 23 PHP
PHP 实用代码收集
Jan 22 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php数组删除元素示例
Mar 21 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
总结对比php中的多种序列化
Aug 28 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 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
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
解释&&和||在javascript中的另类用法
2014/07/28 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
杭州时比特电子有限公司SQL
2013/08/22 面试题
县优秀教师事迹材料
2014/01/31 职场文书
销售团队激励口号
2014/06/06 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
刮痧观后感
2015/06/05 职场文书
教师外出学习心得体会
2016/01/18 职场文书
win7配置本地ftp服务器的图文教程
2022/08/05 Servers