chenbool/curl

一个轻量级的 PHP 网络操作类, 基于 Curl 封装并实现了 Get | Post | Upload | Download 等常用方法

Maintainers

Package info

github.com/chenbool/curl

Homepage

pkg:composer/chenbool/curl

Statistics

Installs: 20

Dependents: 1

Suggesters: 0

Stars: 3

Open Issues: 0

v1.1.0 2026-05-10 03:50 UTC

This package is auto-updated.

Last update: 2026-05-10 04:00:54 UTC


README

version php license

一个轻量级的 PHP 网络操作类,基于 Curl 封装,支持 GET、POST、UPLOAD、DOWNLOAD 等常用操作,采用方法链式调用设计。

📋 目录

✨ 特性

特性 描述
🚀 轻量级 单文件实现,无额外依赖
🔗 链式调用 支持流畅的方法链式操作
📤 文件上传 支持单/多文件上传
📥 文件下载 支持文件下载并保存
🔄 自动重试 请求失败自动重试机制
🔒 SSL支持 支持 HTTPS 请求
⚡ 高性能 基于 cURL 扩展,性能优异

🔧 环境要求

项目 版本
PHP >= 5.3.0
cURL扩展 已安装

📦 安装

方式一:Composer 安装(推荐)

composer require chenbool/curl

方式二:手动引入

require_once 'src/Curl.php';

🚀 快速开始

<?php
use chenbool\Curl;

// GET 请求
$response = Curl::init()->url('https://api.example.com/data')->data();

// POST 请求
$response = Curl::init()
    ->post(['name' => 'test', 'value' => 123])
    ->url('https://api.example.com/submit')
    ->data();

echo $response;

📖 使用示例

🔍 GET 请求

$curl = Curl::init();

// 简单 GET
$curl->url('https://api.example.com/users');

// 带查询参数
$curl->url('https://api.example.com/users?page=1&limit=10');

// 获取响应
if (!$curl->error()) {
    echo $curl->data();
} else {
    echo 'Error: ' . $curl->message();
}

📝 POST 请求

$curl = Curl::init();

// 方式一:数组传参
$curl->post([
    'username' => 'admin',
    'password' => '123456'
])->url('https://api.example.com/login');

// 方式二:逐个设置
$curl->post('username', 'admin')
     ->post('password', '123456')
     ->url('https://api.example.com/login');

📤 文件上传

$curl = Curl::init();

// 单文件上传
$curl->post(['description' => '头像'])
     ->file('avatar', '/path/to/photo.jpg', 'image/jpeg', 'photo.jpg')
     ->url('https://api.example.com/upload');

// 多文件上传
$curl->post(['description' => '相册'])
     ->file('images[]', '/path/to/1.jpg', 'image/jpeg', '1.jpg')
     ->file('images[]', '/path/to/2.jpg', 'image/jpeg', '2.jpg')
     ->url('https://api.example.com/upload');

📥 文件下载

$curl = Curl::init();

// 下载并保存
$curl->url('https://example.com/file.zip')
     ->save('/path/to/save/file.zip');

if ($curl->error()) {
    echo 'Download failed: ' . $curl->message();
}

⚙️ 高级配置

$curl = Curl::init();

// 自定义超时
$curl->set('CURLOPT_TIMEOUT', 60)
     ->set('CURLOPT_CONNECTTIMEOUT', 10);

// 设置请求头
$curl->set('CURLOPT_HTTPHEADER', [
    'Authorization: Bearer token123',
    'Content-Type: application/json'
]);

// 启用自动重试
$curl->retry(3)
     ->url('https://api.example.com/data');

🔄 完整请求流程

$curl = Curl::init();

// 链式调用示例
$result = $curl
    ->set('CURLOPT_TIMEOUT', 30)
    ->set('CURLOPT_SSL_VERIFYPEER', false)
    ->post([
        'name' => 'test',
        'data' => json_encode(['key' => 'value'])
    ])
    ->retry(3)
    ->url('https://api.example.com/submit');

// 结果处理
if ($result->error()) {
    echo "请求失败: " . $result->message();
    print_r($result->info());  // 查看详细信息
} else {
    echo "响应内容: " . $result->data();
}

📚 API 文档

核心方法

方法 参数 返回值 说明
init() - Curl 静态初始化,获取单例实例
url($url) string $url Curl 设置请求 URL
post($data, $value) array/string $data, string $value Curl 设置 POST 数据
file($field, $path, $type, $name) string... Curl 设置上传文件
save($path) string $path Curl 保存响应到文件
set($option, $value) string $option, mixed $value Curl 设置 cURL 选项
retry($times) int $times Curl 设置失败重试次数

结果方法

方法 返回值 说明
error() int 获取错误码,0 表示无错误
message() string 获取错误信息
data() string 获取响应内容
info() array 获取请求信息(HTTP 状态码等)

cURL 常用选项

选项 默认值 说明
CURLOPT_TIMEOUT 30 请求超时时间(秒)
CURLOPT_CONNECTTIMEOUT 10 连接超时时间(秒)
CURLOPT_SSL_VERIFYPEER false 是否验证 SSL 证书
CURLOPT_RETURNTRANSFER true 返回字符串而非直接输出
CURLOPT_HEADER 0 是否在输出中包含 header
CURLOPT_FOLLOWLOCATION - 是否跟随重定向
CURLOPT_USERAGENT - 设置 User-Agent
CURLOPT_REFERER - 设置 Referer

更多选项请参考 PHP cURL 官方文档

📂 项目结构

curl/
├── src/
│   └── Curl.php          # 核心类文件
├── composer.json          # Composer 配置
├── composer.lock          # 依赖锁定
└── README.md             # 本文档

🔗 相关链接

📄 许可证

MIT License

👤 作者

如果这个项目对您有帮助,请给个 ⭐ Star 支持一下!