PHP模拟asp中response类实现方法

5年以前  |  阅读数:305 次  |  编程语言:PHP 

本文实例讲述了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例