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 相关文章推荐
第六节--访问属性和方法
Nov 16 PHP
一段防盗连的PHP代码
Dec 06 PHP
20个PHP常用类库小结
Sep 11 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
PHP随机数 C扩展随机数
May 04 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 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
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
php封装一个异常的处理类
2017/06/08 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python3中zip()函数使用详解
2018/06/29 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
波兰电子产品购物网站:Vobis
2019/05/26 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
Ruby如何进行文件操作
2014/07/17 面试题
毕业生简单求职信
2013/11/19 职场文书
关于爱情的广播稿
2014/01/16 职场文书
运动会四百米广播稿
2014/01/19 职场文书
趣味活动策划方案
2014/02/08 职场文书
计算机实训报告总结
2014/11/05 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
Python字典和列表性能之间的比较
2021/06/07 Python