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面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
php gzip压缩输出的实现方法
Apr 27 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP实现用session来实现记录用户登陆信息
Oct 15 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python中解析json格式文件的方法示例
2017/05/03 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
瀑布模型都有哪些优缺点
2014/06/23 面试题
Laravel中Kafka的使用详解
2021/03/24 PHP
园林毕业生自我鉴定范文
2013/12/29 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
元旦趣味活动方案
2014/08/22 职场文书
邀请书格式范文
2015/02/02 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS