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 相关文章推荐
在PHP3中实现SESSION的功能(三)
Oct 09 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
php中socket的用法详解
Oct 24 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
PHP输入输出流学习笔记
May 12 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
laravel请求参数校验方法
Oct 10 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 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 smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
phpStorm2020 注册码
2020/09/17 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
python获取网页状态码示例
2014/03/30 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
中学教师管理制度
2014/01/14 职场文书
文明学生事迹材料
2014/01/29 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
物业公司管理制度
2015/08/05 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL