个性化阅读
专注于IT技术分析

7个适用于PHP的最佳Curl包装器库

本文概述

当我们谈论HTTP客户端库来访问PHP中的Web API时, Guzzle和Unirest才是王道, 但是有时根据项目的规模或重要性, 你不需要这样的库, 而只需要cURL。关键是使用默认语法的cURL可能变得很乏味, 因此你可能希望使用包装器来简化许多任务并简化请求的执行。在此顶部, 我们想与你分享7个可用于Web上cURL的最佳包装器库。

7. Curl by dcai

该包装器提供了一个抽象层, 可简化PHP cURL库的语法:

$http = new dcai\curl;
// enable cache
$http = new dcai\curl(array('cache'=>true));
// enable cookie
$http = new dcai\curl(array('cookie'=>true));
// enable proxy
$http = new dcai\curl(array('proxy'=>true));

// HTTP GET
$response = $http->get('http://example.com');
// HTTP POST
$response = $http->post('http://example.com/', array('q'=>'words', 'name'=>'moodle'));
// POST RAW
$xml = '<action>perform</action>';
$response = $http->post('http://example.com/', $xml);
// HTTP PUT
$response = $http->put('http://example.com/', array('file'=>'/var/www/test.txt');

6. CurlWrapper

CurlWrapper是用于PHP cURL扩展的灵活包装类。你可以使用以下方法轻松初始化该库的实例:

try {
    $curl = new CurlWrapper();
} catch (CurlWrapperException $e) {
    echo $e->getMessage();
}

CurlWrapper对象支持5种类型的请求:HEAD, GET, POST, PUT和DELETE。你必须指定一个要请求的URL, 并可以选择指定一个关联数组或变量的查询字符串与之一起发送:

$response = $curl->head($url, $params);
$response = $curl->get($url, $params);
$response = $curl->post($url, $params);
$response = $curl->put($url, $params);
$response = $curl->delete($url, $params);

5. Rolling cURLx

Rolling Curl是一个易于使用的cURL Multi包装器, 具有非常酷的名称。它旨在使PHP中的并发http请求尽可能容易。首先使用你想一次打开的最大并发请求数来初始化类:

$RCX = new RollingCurlX(10);

此后的所有请求将排队, 直到一个请求完成:

$url = 'http://www.google.com/search?q=apples';
$post_data = ['user' => 'bob', 'token' => 'dQw4w9WgXcQ']; //set to NULL if not using POST
$user_data = ['foo', $whatever];
$options = [CURLOPT_FOLLOWLOCATION => false];
function callback_functn($response, $url, $request_info, $user_data, $time) {
    $time; //how long the request took in milliseconds (float)
    $request_info; //array returned by curl_getinfo($ch), plus a couple extras
}

$RCX->addRequest($url, $post_data, 'callback_functn', $user_data, $options, $headers);

发送请求。阻塞直到所有请求完成或超时:

$RCX->execute();

4. PHP Curl

PHP Curl是一个非常简单的cURL PHP curl包装类。根据作者的说法, 此类是用于PHP的curl功能的最小的OOP包装器。注意, 这并不意味着是高级抽象。你仍然应该知道”纯PHP” curl的工作原理, 需要了解curl选项的设置, 还需要了解一些HTTP基础知识。它的语法对开发人员友好:

// newRequest, newJsonRequest and newRawRequest returns a Request object
$request = $curl->newRequest('post', $url, ['foo' => 'bar'])
	->setHeader('Accept-Charset', 'utf-8')
	->setHeader('Accept-Language', 'en-US')
	->setOption(CURLOPT_CAINFO, '/path/to/cert')
	->setOption(CURLOPT_FOLLOWLOCATION, true);
$response = $request->send();

3. Curl Easy

Curl Easy是PHP的cURL扩展的包装。支持并行和非阻塞请求。这是一个很小但功能强大且健壮的库, 可加快处理速度。如果你厌倦了将PHP cURL扩展程序与它的过程接口一起使用, 但是还希望控制脚本执行, 那么这对你来说是个不错的选择。该库:

  • 经过广泛的单元测试。
  • 具有中等级别接口的轻量级库。它不是多合一的库。
  • 具有非常简单的接口的并行/异步连接。
  • 在运行时并行附加/分离请求!
  • 支持回调, 因此你可以控制执行过程。
  • 智能设置器, 以替代CURLOPT_ *常量。
  • 如果你知道cURL php扩展名, 则无需从头开始学习

它的语法也很容易理解:

<?php
// We will check current Bitcoin price via API.
$request = new \cURL\Request('https://bitpay.com/rates/USD');
$request->getOptions()
    ->set(CURLOPT_TIMEOUT, 5)
    ->set(CURLOPT_RETURNTRANSFER, true);
$response = $request->send();
$feed = json_decode($response->getContent(), true);
echo "Current Bitcoin price: " . $feed['data']['rate'] . " " . $feed['data']['code'] . "\n";

2. Curl by Shuber

Curl库是PHP的基本CURL包装器。 Curl对象支持5种类型的请求:HEAD, GET, POST, PUT和DELETE。你必须指定要请求的url, 并可以选择指定要与之一起发送的关联数组或变量字符串。只需要求并初始化Curl类, 如下所示:

require_once 'curl.php';
$curl = new Curl;

$response = $curl->head($url, $vars = array());
$response = $curl->get($url, $vars = array()); # The Curl object will append the array of $vars to the $url as a query string
$response = $curl->post($url, $vars = array());
$response = $curl->put($url, $vars = array());
$response = $curl->delete($url, $vars = array());

1. PHP Curl Class

PHP Curl Class是cURL的一个很好编写的包装, 它使发送HTTP请求和与任何类型的Web API集成变得非常容易。 PHP Curl Class可与PHP 5.3、5.4、5.5、5.6、7.0、7.1和HHVM一起使用。该库是众所周知的, 并提供了非常简单的语法:

require __DIR__ . '/vendor/autoload.php';

use \Curl\Curl;

$curl = new Curl();
$curl->get('https://www.example.com/');

if ($curl->error) {
    echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage . "\n";
} else {
    echo 'Response:' . "\n";
    var_dump($curl->response);
}

如果你知道使用PHP编写的cURL扩展的另一个很棒的包装库, 请在注释框中与社区共享。

赞(0)
未经允许不得转载:srcmini » 7个适用于PHP的最佳Curl包装器库

评论 抢沙发

评论前必须登录!