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 相关文章推荐
浅析is_writable的php实现
Jun 18 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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字符串的替换,分割和连接方法
2016/05/23 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Django 路由系统URLconf的使用
2018/10/11 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
python实现3D地图可视化
2020/03/25 Python
python各种excel写入方式的速度对比
2020/11/10 Python
欧克利英国官网:Oakley英国
2019/08/24 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
网络技术专业求职信
2014/07/13 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2015年项目工作总结
2015/04/29 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
教你部署vue项目到docker
2022/04/05 Vue.js
vscode内网访问服务器的方法
2022/06/28 Servers