PHP模拟asp中response类实现方法
本文实例讲述了PHP模拟asp中response类的方法。分享给大家供大家参考。具体如下:
习惯了asp或是asp.net开发的人,他们会经常用到response类,这个类用于处理客户端的响应,可以实现跳转,输出等功能.在php中没有这个类,但是确实可以通过函数来模拟这个类.
/* *类用途:实现类似于asp中的response功能 */ finalclassResponse{ private$headers=array(); private$output; private$level=0; publicfunctionaddHeader($key,$value){ $this->headers[$key]=$value; } publicfunctionremoveHeader($key){ if(isset($this->headers[$key])){ unset($this->headers[$key]); } } publicfunctionredirect($url){ header('Location:'.$url); exit; } publicfunctionsetOutput($output,$level=0){ $this->output=$output; $this->level=$level; } privatefunctioncompress($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); returngzencode($data,(int)$level); } publicfunctionoutput(){ if($this->level){ $ouput=$this->compress($this->output,$this->level); }else{ $ouput=$this->output; } if(!headers_sent()){ foreach($this->headersas$key=>$value){ header($key.':'.$value); } } echo$ouput; } }
希望本文所述对大家的php程序设计有所帮助。