A5下载 - 努力做内容最丰富最安全的下载站!

A5站长下载站

当前位置:A5下载 > 源码技巧 > 其它源码教程 > PHP封装CURL扩展类实例

PHP封装CURL扩展类实例

时间:2015-07-29 09:51作者:fang人气:65

本文实例讲述了PHP封装CURL扩展类。分享给大家供大家参考。具体如下:

<?php

/**

* @description: 封装CURL扩展

* @date: 2014-07-28 16:04

*/

/**

* @编码规范

* @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage

* @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result

* @function 函数名与类名规则相同 eg: function SendRequest

* @params 函数形参规则与变量名相同

* @class-variable 成员变量,以下划线结尾,多个单词使用下划线分隔. eg: private $host_name_

*/

/**

* @要求

*

*/

class Curl{

/**

* @请求的host

*/

private $host_;

/**

* @curl 句柄

*/

private $ch_;

/**

* @超时限制时间

*/

const time_=5;

/**

* @请求的设置

*/

private $options_;

/**

* @保存请求头信息

*/

private $request_header_;

/**

* @保存响应头信息

*/

private $response_header_;

/**

* @body_ 用于保存curl请求返回的结果

*/

private $body_;

/**

* @读取cookie

*/

private $cookie_file_;

/**

* @写入cookie

*/

private $cookie_jar_;

/**

* @todo proxy

* @构造函数,初始化CURL回话

*/

public function Start($url){

$this->ch_ = curl_init($url);

curl_setopt($this->ch_, CURLOPT_HEADER, 1);

curl_setopt($this->ch_, CURLOPT_RETURNTRANSFER , 1 );

}

/**

* @返回响应头

*/

public function ResponseHeader($url){

if (!function_exists('http_parse_headers')) {

function http_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]);

} else if(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

*/

public function LoadCookie($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

*/

public function SaveCookie($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

*/

public function SetHeader($headers = null){

if (is_array($headers) && count($headers) > 0) {

curl_setopt($this->ch_, CURLOPT_HTTPHEADER, $headers);

}

}

/**

* @GET请求

*/

public function Get($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请求

*/

public function Post($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: google http head 方法

*/

public function Head($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会话

*/

public function Execx(){

return curl_exec($this->ch_);

}

/**

* @关闭CURL句柄

*/

public function Close($body_){

if ($body_ === false) {

echo "CURL Error: " . curl_error($body_);

return false;

}

curl_close($this->ch_);

return $body_;

}

}

希望本文所述对大家的php程序设计有所帮助。

标签PHP,封装,CURL,扩展,实例,本文,实例,讲述了,PH

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

公众号