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程序设计有所帮助。