initphp/curl

1.0 2022-07-01 07:35 UTC

This package is auto-updated.

Last update: 2024-09-04 16:09:35 UTC


README

Curl 库可以帮助您使用 PHP 进行高级 HTTP 请求。

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

要求

  • PHP 7.4 或更高版本
  • PHP Curl 扩展

安装

composer require initphp/curl

用法

require_once "vendor/autoload.php";
use \InitPHP\Curl\Curl;

$curl = new Curl();
$curl->setUrl("https://example.com");
$curl->handler();
    
$res = $this->getResponse();

if(!empty($curl->getError())){
    die($curl->getError());
}
echo $res['body'];

此库可以作为您的 API 服务 HTTP 客户端使用。示例

require_once "vendor/autoload.php";
use \InitPHP\Curl\Curl;

$curl = Curl::client('PUT', 'http://api.service.example.com/update/1')

$curl->setVersion("1.1") // HTTP Version
    ->setHeader("Content-Type", "application/json")
    ->setBody(json_encode([
        'username'  => 'admin',
        'password'  => '12345',
    ]))
    ->handler();

if(!empty($curl->getError())){
    die($curl->getError());
}

switch ($curl->getResponse('code')) {
    case 200 :
    case 201 :
        // Success
        break;
    case 404 :
        // Not Found
        break;
    case 400:
        // Badrequest
        break;
    // ...
}

方法

client()

创建一个新的客户端对象。

public static function client(string $method, string $url): \InitPHP\Curl\Curl;

getResponse()

返回 curl 操作的结果。

public function getResponse(null|string $key = null): null|mixed;

以下将解释可用的 $key 参数值及其说明。

  • NULL : 返回包含所有响应信息的关联数组。
  • "status" : 返回 HTTP 响应的状态行信息。
  • "code" : 返回 HTTP 响应代码。
  • "version" : 返回 HTTP 响应版本信息。
  • "headers" : 返回 HTTP 响应的头部信息作为数组。
  • "body" : 返回 HTTP 响应的主体。

setUrl()

为 cURL 定义 URL 信息。

public function setUrl(string $url): self

如果不是有效的 URL,则抛出 \InvalidArgumentException

setHeader()

为请求添加头部。

public function setHeader(string $name, string $value): self

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl->setHeader('Content-type', 'application/json; charset=utf8');

setHeaders()

对于请求;通过关联数组添加一个或多个头部。

public function setHeaders(array $headers): self

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl->setHeaders([
    'Content-type' => 'application/json; charset=utf8'
]);

setMethod()

定义 HTTP 请求方法。

public function setMethod(string $method = 'GET'): self

$method 参数可以取以下值;

  • GET, POST, PUT, HEAD, DELETE, PATCH, OPTIONS

setBody()

HTTP 请求用于手动定义内容信息。

public function setBody(string $body): self

setVersion()

定义 HTTP 请求的 HTTP 版本。

public function setVersion(string $httpVersion = '1.1'): self

$httpVersion 参数可以取以下值;

  • 1.0
  • 1.1
  • 2.0 (需要 libcurl v7.33 或更高版本)

setUserAgent()

定义在 cURL 过程中报告给服务器的用户代理信息。

public function setUserAgent(null|string $userAgent = null): self

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl->setUserAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0");

setReferer()

定义要报告给服务器的 HTTP 引用信息。

public function setReferer(null|string $referer = null): self

setAllowRedirect()

定义是否遵循重定向。如果没有使用此方法,则不会遵循重定向。

public function setAllowRedirect(int $maxRedirect = 3): self

setTimeout()

定义请求的等待时间限制(秒或毫秒)。

public function setTimeout(int $timeout = 0, bool $isMicrosecond = false): self

如果 $isMicrosecond 为 FALSE,则使用该值作为秒。

setField()

定义要作为 POST 发送的数据。

public function setField(string $key, string $value): self

setFields()

它定义了通过 POST 发送的数据,使用关联数组。

public function setFields(array $fields) : self

setSSL()

定义 cURL 请求的 SSL 配置。

public function setSSL(int $host = 2, int $verify = 1, null|int $version = null): self

setProxy()

定义 cURL 使用的代理。

public function setProxy($proxy): self

setUpload()

它将文件发送到服务器。

public function setUpload(string $name, \CURLFile $file): self

示例(单个)

/** @var \InitPHP\Curl\Curl $curl */
$curl->setUpload("upload_file", new \CURLFile(__DIR__ . 'image.jpg')); // $_FILES["upload_file"]

示例(多个)

/** @var \InitPHP\Curl\Curl $curl */
$curl->setUpload("upload_file[0]", new \CURLFile(__DIR__ . 'image-1.jpg'));
$curl->setUpload("upload_file[1]", new \CURLFile(__DIR__ . 'image-2.jpg'));

getInfo()

它是本库中的 curl_getinfo() 函数。

public function getInfo(null|string $key = null): null|mixed

getError()

它是本库中的 curl_error() 函数。

public function getError(): null|string

setOpt()

它是本库中的 curl_setopt() 函数。

public function setOpt(int $key, mixed $value): self

setOptions()

它是本库中的 curl_setopt_array() 函数。

public function setOptions(array $options): self

handler()

cURL 启动并执行。

public function handler(): bool

save()

cURL 处理后,将内容写入指定的文件。

public function save(string $filePath): false|int

成功时返回写入的字节数。

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl = new \InitPHP\Curl\Curl();
$curl->setUrl("http://example.com")
        ->handler();
        
if($curl->save(__DIR__ . '/example.html') === FALSE){
    echo "The file could not be written.";
}

setCookie()

定义要随 cURL 发送的 cookie。

public function setCookie(string $name, string|int|float $value): self

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl->setCookie('username', 'admin') // $_COOKIE['username']
    ->setCookie('mail', 'admin@example.com'); // $_COOKIE['mail']

setCookies()

通过关联数组定义多个 cookie。

public function setCookies(array $cookies): self

示例

/** @var \InitPHP\Curl\Curl $curl */
$curl->setCookies([
    'username'  => 'admin', // $_COOKIE['username']
    'mail'      => 'admin@example.com' // $_COOKIE['mail']
]);

setCookieJarFile()

它告诉存储要发送到服务器的 cookie 值的文件路径。

public function setCookieJarFile(string $filePath): self

如果指定的文件存在,则从文件中读取cookie并发送到服务器。 CURLOPT_COOKIEFILE

如果指定的文件不存在,则将来自服务器的cookie写入文件。 CURLOPT_COOKIEJAR

示例

$login = new \InitPHP\Curl\Curl();
$login->setUrl("http://example.com/user/login")
    ->setField('username', 'admin')
    ->setField('password', '123456')
    ->setMethod('POST')
    ->setCookieJarFile(__DIR__ . '/session.txt')
    ->handler();
    
$dashboard = new \InitPHP\Curl\Curl();
$dashboard->setUrl("http://example.com/user/dashboard")
    ->setCookieJarFile(__DIR__ . '/session.txt')
    ->handler();

致谢

许可

版权所有 © 2022 MIT许可