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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
NT IIS下用ODBC连接数据库
Oct 09 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
解析PHP的session过期设置
Jun 29 PHP
php的一个简单加密解密代码
Jan 14 PHP
smarty简单分页的实现方法
Oct 27 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
Oct 13 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
Mar 14 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 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与XML联手进行网站编程代码实例
2008/07/10 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
js编写简易的计算器
2020/07/29 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python 决策树算法的实现
2020/10/09 Python
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
领班岗位职责范文
2014/02/06 职场文书
业务员自荐信范文
2014/04/20 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
助学金感谢信
2015/01/20 职场文书
客户经理岗位职责
2015/01/31 职场文书
办公室文员岗位职责
2015/02/04 职场文书
《角的度量》教学反思
2016/02/18 职场文书
nginx内存池源码解析
2021/11/20 Servers