PHP封装CURL扩展类实例
本文实例讲述了PHP封装CURL扩展类。分享给大家供大家参考。具体如下:
<?php /** *@description:封装CURL扩展 *@date:2014-07-2816:04 */ /** *@编码规范 *@class类名首字母大写,类名为多个单词,每个大字首字母大写eg:classCurl,classCurlPage *@variable变量名小写,变量名为多个单词,每个单词小写,使用下划线_分割eg:$curl_result *@function函数名与类名规则相同eg:functionSendRequest *@params函数形参规则与变量名相同 *@class-variable成员变量,以下划线结尾,多个单词使用下划线分隔.eg:private$host_name_ */ /** *@要求 * */ classCurl{ /** *@请求的host */ private$host_; /** *@curl句柄 */ private$ch_; /** *@超时限制时间 */ consttime_=5; /** *@请求的设置 */ private$options_; /** *@保存请求头信息 */ private$request_header_; /** *@保存响应头信息 */ private$response_header_; /** *@body_用于保存curl请求返回的结果 */ private$body_; /** *@读取cookie */ private$cookie_file_; /** *@写入cookie */ private$cookie_jar_; /** *@todoproxy *@构造函数,初始化CURL回话 */ publicfunctionStart($url){ $this->ch_=curl_init($url); curl_setopt($this->ch_,CURLOPT_HEADER,1); curl_setopt($this->ch_,CURLOPT_RETURNTRANSFER,1); } /** *@返回响应头 */ publicfunctionResponseHeader($url){ if(!function_exists('http_parse_headers')){ functionhttp_parse_headers($raw_headers){ $headers=array(); foreach(explode("\n",$raw_headers)as$i=>$h){ $h=explode(':',$h,2); if(isset($h[1])){ if(!isset($headers[$h[0]])){ $headers[$h[0]]=trim($h[1]); }elseif(is_array($headers[$h[0]])){ $tmp=array_merge($headers[$h[0]],array(trim($h[1]))); $headers[$h[0]]=$tmp; }else{ $tmp=array_merge(array($headers[$h[0]]),array(trim($h[1]))); $headers[$h[0]]=$tmp; } } } return$headers; } } $this->Start($url); curl_setopt($this->ch_,CURLOPT_TIMEOUT,Curl::time_); $this->body_=$this->Execx(); $header_size=curl_getinfo($this->ch_,CURLINFO_HEADER_SIZE); $this->response_header_=substr($this->body_,$start=0,$offset=$header_size); $this->response_header_=http_parse_headers($this->response_header_); print_r($this->response_header_); return$this->Close($this->body_); } /** *@读取cookie */ publicfunctionLoadCookie($url,$cookie_file){ $this->Start($url); curl_setopt($this->ch_,CURLOPT_COOKIE,1); curl_setopt($this->ch_,CURLOPT_COOKIEFILE,$cookie_file); $this->body_=$this->Execx(); return$this->Close($this->body_); } /** *@写入cookie */ publicfunctionSaveCookie($url){ $this->Start($url); curl_setopt($this->ch_,CURLOPT_COOKIE,1); curl_setopt($this->ch_,CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($this->ch_,CURLOPT_COOKIEJAR,'cookie.txt'); $this->body_=$this->Execx(); return$this->Close($this->body_); } /** *@设置HEADER */ publicfunctionSetHeader($headers=null){ if(is_array($headers)&&count($headers)>0){ curl_setopt($this->ch_,CURLOPT_HTTPHEADER,$headers); } } /** *@GET请求 */ publicfunctionGet($url,array$params=array()){ if($params){ if(strpos($url,'?')){ $url.="&".http_build_query($params); } else{ $url.="?".http_build_query($params); } } $this->Start($url); curl_setopt($this->ch_,CURLOPT_TIMEOUT,Curl::time_); if(strpos($url,'https')===0){ curl_setopt($this->ch_,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($this->ch_,CURLOPT_SSL_VERIFYPEER,0); } $this->body_=$this->Execx(); return$this->Close($this->body_); } /** *@POST请求 */ publicfunctionPost($url,array$params=array()){ $this->Start($url); curl_setopt($this->ch_,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($this->ch_,CURLOPT_HTTPHEADER,array("Content-Type:application/x-www-form-urlencoded")); curl_setopt($this->ch_,CURLOPT_POST,true); curl_setopt($this->ch_,CURLOPT_TIMEOUT,Curl::time_); if($params){ curl_setopt($this->ch_,CURLOPT_POSTFIELDS,http_build_query($params)); } $this->body_=$this->Execx(); return$this->Close($this->body_); } /** *@tips:googlehttphead方法 */ publicfunctionHead($url,array$params=array()){ $this->Start($url); curl_setopt($this->ch_,CURLOPT_TIMEOUT,Curl::time_); curl_setopt($this->ch_,CURLOPT_RETURNTRANSFER,0); curl_setOpt($this->ch_,CURLOPT_NOBODY,true); $this->body_=$this->Execx(); return$this->Close($this->body_); } /** *@执行CURL会话 */ publicfunctionExecx(){ returncurl_exec($this->ch_); } /** *@关闭CURL句柄 */ publicfunctionClose($body_){ if($body_===false){ echo"CURLError:".curl_error($body_); returnfalse; } curl_close($this->ch_); return$body_; } }
希望本文所述对大家的php程序设计有所帮助。