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插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
解析htaccess伪静态的规则
Jun 18 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
利用php生成验证码
Feb 23 PHP
详解php与ethereum客户端交互
Apr 28 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 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
随机广告显示(PHP函数)
2006/10/09 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
python中list列表的高级函数
2016/05/17 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
什么是反射?如何实现反射?
2016/07/25 面试题
写好自荐信需做到的5要点
2014/03/07 职场文书
工程项目经理任命书
2014/06/05 职场文书
政协调研汇报材料
2014/08/15 职场文书
书法社团活动总结
2015/05/07 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
医德医风学习心得体会
2016/01/25 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Python sklearn分类决策树方法详解
2022/09/23 Python