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