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编程网上资源导航
Oct 09 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
PHP学习笔记之数组篇
Jun 28 PHP
php遍历数组的方法分享
Mar 22 PHP
php命名空间学习详解
Feb 27 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php简单中奖算法(实例)
Aug 15 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python脚本后台执行方式
2019/12/21 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
酒店开业庆典主持词
2014/03/21 职场文书
展览会邀请函
2015/02/02 职场文书
校长师德表现自我评价
2015/03/05 职场文书
员工自我评价范文
2015/03/11 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
酒桌上的开场白
2015/06/01 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Redis 常见使用场景
2021/08/30 Redis
alibaba seata服务端具体实现
2022/02/24 Java/Android
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python