在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
   
}
原文地址:https://www.cnblogs.com/fx2008/p/2974870.html