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生成静态页面详解
Nov 19 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
php获取网页上所有链接的方法
Apr 03 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
Express之托管静态文件的方法
2018/06/01 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
Python循环结构的应用场景详解
2019/07/11 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
python简单实现插入排序实例代码
2020/12/16 Python
python中的插入排序的简单用法
2021/01/19 Python
Python运算符+与+=的方法实例
2021/02/18 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
大学生的自我鉴定范文
2014/01/21 职场文书
生产部管理制度
2014/01/31 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
安全教育实施方案
2014/03/02 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python