PHP封装CURL扩展类实例


Posted in PHP onJuly 28, 2015

本文实例讲述了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 相关文章推荐
第九节 绑定 [9]
Oct 09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
学习php分页代码实例
Oct 24 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
phpnow php探针环境检测代码
Nov 04 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP单例模式详细介绍
Jul 01 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php图像处理类实例
Jul 28 #PHP
图文介绍PHP添加Redis模块及连接
Jul 28 #PHP
PHP生成树的方法
Jul 28 #PHP
php计算税后工资的方法
Jul 28 #PHP
怎样搭建PHP开发环境
Jul 28 #PHP
php递归实现无限分类的方法
Jul 28 #PHP
php类自动加载器实现方法
Jul 28 #PHP
You might like
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
python下载文件记录黑名单的实现代码
2017/10/24 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
自动一体化专业求职信
2014/03/15 职场文书
《锄禾》教学反思
2014/04/08 职场文书
个人校本研修方案
2014/05/26 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
代理词怎么写
2015/05/25 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
七年级思品教学反思
2016/02/20 职场文书
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript