PHP模拟asp中response类实现方法

 更新时间:2015年08月08日 14:34:33   作者:Minho  
这篇文章主要介绍了PHP模拟asp中response类的方法,可实现模拟ASP中response类处理客户端响应的功能,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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事务回滚简单实现方法示例

    这篇文章主要介绍了php事务回滚简单实现方法,结合实例形式分析了php事务的定义、提交及回滚事务的具体操作技巧,需要的朋友可以参考下
    2017-03-03
  • PHP中return 和 exit 、break和contiue 区别与用法

    PHP中return 和 exit 、break和contiue 区别与用法

    return、break和contiue是语言结构,就如同if语句之类的,但是exit却是个函数
    2012-04-04
  • Fastadmin中用户登录时TOKEN的交互方法

    Fastadmin中用户登录时TOKEN的交互方法

    Fastadmin中登录所有的操作都是基于User用户表进行的$this->auth,如果是别的用户表需要进行相关的改动。API跟Auth这两个类库里面进行系列操作即可。在需要获取用户信息的接口,前端需要在调用api的时候在头部传token,这个token在登录的时候返回给前端。
    2023-07-07
  • Linux(CentOS)下PHP扩展PDO编译安装的方法

    Linux(CentOS)下PHP扩展PDO编译安装的方法

    这篇文章主要介绍了Linux(CentOS)下PHP扩展PDO编译安装的方法,详细说明了Linux下安装PHP的PDO扩展所涉及的相关技巧与详细步骤,需要的朋友可以参考下
    2016-04-04
  • php header 详细使用说明与使用心得

    php header 详细使用说明与使用心得

    下面是关于header函数的详细使用说明
    2009-11-11
  • php从文件夹随机读取文件的方法

    php从文件夹随机读取文件的方法

    这篇文章主要介绍了php从文件夹随机读取文件的方法,可实现php从指定的目录随机读取文件及设置参数进行文件过滤的功能,需要的朋友可以参考下
    2015-06-06
  • PHP计算2点经纬度之间的距离代码

    PHP计算2点经纬度之间的距离代码

    以下是对PHP计算2点经纬度之间的距离代码进行了分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • php之使用docker运行workerman案例讲解

    php之使用docker运行workerman案例讲解

    这篇文章主要介绍了php之使用docker运行workerman案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • PHP的Json中文处理解决方案

    PHP的Json中文处理解决方案

    这篇文章主要介绍了PHP的Json中文处理解决方案,涉及php编码转换的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • CodeIgniter php mvc框架 中国网站

    CodeIgniter php mvc框架 中国网站

    CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架
    2008-05-05

最新评论