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中计算时间差的几种方法
Dec 31 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
php模板引擎技术简单实现
Mar 15 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
php实现的错误处理封装类实例
Jun 20 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 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 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
php并发加锁示例
2016/10/17 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python3编码问题汇总
2016/09/06 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python散点图实例之随机漫步
2018/08/27 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
python cookie反爬处理的实现
2020/11/01 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
初二生物教学反思
2014/02/03 职场文书
主持词开场白
2014/03/17 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
结对共建工作方案
2014/06/02 职场文书
小学校长个人总结
2015/03/03 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers
win10搭建配置ftp服务器的方法
2022/08/05 Servers