• 在PHP中模拟asp的response类


    在PHP中模拟asp的response类

    习惯了asp或是asp.net开发的人, 他们会经常用到response类,这个类用于处理客户端的相应,可以实现跳转,输出等功能. 在php中没有这个类,但是确实可以通过函数来模拟这个类.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    /* 
    * 作者: 雪狐博客 
    * 类用途: 实现类似于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
       
    }
  • 相关阅读:
    day7 反射
    day7 面向对象进阶
    day7 面向对象class()学习
    day6 subprocess模块、logging模块
    day6 hashlib模块
    day6 ConfigParser模块 yaml模块
    day6 xml文件格式的处理
    day6 shelve模块
    day6 SYS模块
    Servlet的学习之Response响应对象(1)
  • 原文地址:https://www.cnblogs.com/fx2008/p/2974870.html
Copyright © 2020-2023  润新知