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运行速度的一些小技巧分享
Jul 03 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
php定时计划任务与fsockopen持续进程实例
May 23 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php分页函数完整实例代码
Sep 22 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
Yii框架分页技术实例分析
Aug 30 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 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强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
javaScript基础详解
2017/01/19 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
优化Python代码使其加快作用域内的查找
2015/03/30 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python----数据预处理代码实例
2019/03/20 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
西部世纪面试题
2014/12/05 面试题
大学生护理专业自荐信
2013/10/03 职场文书
应届生自我鉴定
2013/12/11 职场文书
医院辞职信范文
2014/01/17 职场文书
护士进修自我鉴定
2014/02/07 职场文书
《满井游记》教学反思
2014/02/26 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书