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

本文概述

  • 7. Curl by dcai
  • 6. CurlWrapper
  • 5. Rolling cURLx
  • 4. PHP Curl
  • 3. Curl Easy
  • 2. Curl by Shuber
  • 1. PHP Curl Class
当我们谈论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. CurlWrapperCurlWrapper是用于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 cURLxRolling Curl是一个易于使用的cURL Multi包装器, 具有非常酷的名称。它旨在使PHP中的并发http请求尽可能容易。首先使用你想一次打开的最大并发请求数来初始化类:
$RCX = new RollingCurlX(10);

此后的所有请求将排队, 直到一个请求完成:
$url = 'http://www.google.com/search?q=apples'; $post_data = http://www.srcmini.com/['user' => 'bob', 'token' => 'dQw4w9WgXcQ']; //set to NULL if not using POST $user_data = http://www.srcmini.com/['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 CurlPHP 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 EasyCurl 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 ShuberCurl库是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 ClassPHP 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); }

【7个适用于PHP的最佳Curl包装器库】如果你知道使用PHP编写的cURL扩展的另一个很棒的包装库, 请在注释框中与社区共享。

    推荐阅读