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继承的一个应用
Sep 06 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
探讨:parse url解析URL,返回其组成部分
Jun 14 PHP
php数组去除空值函数分享
Feb 02 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
示例详解Laravel的注册重构
Aug 14 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
Zend Framework常用校验器详解
Dec 09 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
PHP封装curl的调用接口及常用函数详解
May 31 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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
JavaScript更改class和id的方法
2008/10/10 Javascript
javascript 数组排序函数
2009/08/20 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
浅谈js中的闭包
2015/03/16 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
解析js如何获取css样式
2016/12/11 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
使用FormData实现上传多个文件
2018/12/04 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
理工科学生的自我评价
2013/12/15 职场文书
安全承诺书格式
2014/05/21 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
2014国庆节标语口号
2014/09/19 职场文书
承诺函格式模板
2015/01/21 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
2016年教师新年寄语
2015/08/18 职场文书
同学会演讲稿
2019/04/02 职场文书