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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
php测试kafka项目示例
Feb 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
?生?D片??C字串
2006/12/06 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php实现Session存储到Redis
2015/11/11 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
php 修改密码实现代码
2017/05/24 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
python读取浮点数和读取文本文件示例
2014/05/06 Python
简单了解django缓存方式及配置
2019/07/19 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
领导检查欢迎词
2014/01/14 职场文书
电气工程自动化求职信
2014/03/14 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
作文之亲情600字
2019/09/23 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
MySQL导致索引失效的几种情况
2022/06/25 MySQL