php-curl-class / php-curl-class
PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs.
Installs: 7 535 768
Dependents: 440
Suggesters: 6
Security: 0
Stars: 3 257
Watchers: 164
Forks: 818
Open Issues: 3
Requires
- php: >=7.4
- ext-curl: *
Requires (Dev)
- ext-gd: *
- dealerdirect/phpcodesniffer-composer-installer: *
- friendsofphp/php-cs-fixer: *
- phpcompatibility/php-compatibility: dev-develop
- phpcsstandards/phpcsutils: @alpha
- phpunit/phpunit: *
- squizlabs/php_codesniffer: *
- vimeo/psalm: >=5.25.0
Suggests
- ext-mbstring: *
- dev-master
- 11.0.0
- 10.0.1
- 10.0.0
- 9.19.2
- 9.19.1
- 9.19.0
- 9.18.2
- 9.18.1
- 9.18.0
- 9.17.4
- 9.17.3
- 9.17.2
- 9.17.1
- 9.17.0
- 9.16.1
- 9.16.0
- 9.15.1
- 9.15.0
- 9.14.5
- 9.14.4
- 9.14.3
- 9.14.2
- 9.14.1
- 9.14.0
- 9.13.1
- 9.13.0
- 9.12.6
- 9.12.5
- 9.12.4
- 9.12.3
- 9.12.2
- 9.12.1
- 9.12.0
- 9.11.1
- 9.11.0
- 9.10.0
- 9.9.0
- 9.8.0
- 9.7.0
- 9.6.3
- 9.6.2
- 9.6.1
- 9.6.0
- 9.5.1
- 9.5.0
- 9.4.0
- 9.3.1
- 9.3.0
- 9.2.0
- 9.1.0
- 9.0.0
- 8.10.0
- 8.9.4
- 8.9.3
- 8.9.2
- 8.9.1
- 8.9.0
- 8.8.0
- 8.7.0
- 8.6.2
- 8.6.1
- 8.6.0
- 8.5.1
- 8.5.0
- 8.4.0
- 8.3.3
- 8.3.2
- 8.3.1
- 8.3.0
- 8.2.0
- 8.1.0
- 8.0.3
- 8.0.2
- 8.0.1
- 8.0.0
- 7.4.0
- 7.3.1
- 7.3.0
- 7.2.0
- 7.1.0
- 7.0.1
- 7.0.0
- 6.0.0
- 5.1.0
- 5.0.0
- 4.13.0
- 4.12.0
- 4.11.0
- 4.10.0
- 4.9.0
- 4.8.2
- 4.8.1
- 4.8.0
- 4.6.9
- 4.6.8
- 4.6.7
- 3.6.7
- 3.5.5
- 3.4.4
- 3.4.3
- 2.1.1
- 2.1.0
- 2.0.0
- dev-php5.x-master
This package is auto-updated.
Last update: 2024-10-08 01:49:46 UTC
README
PHP Curl Class makes it easy to send HTTP requests and integrate with web APIs.
- โ๏ธ Installation
- ๐ Requirements
- ๐ Quick Start and Examples
- ๐ Available Methods
- ๐ Security
- ๐ ๏ธ Troubleshooting
- ๐งช Testing
- ๐ค Contributing
โ๏ธ Installation
To install PHP Curl Class, run the following command:
composer require php-curl-class/php-curl-class
To install the latest commit version:
composer require php-curl-class/php-curl-class @dev
Installation instructions to use the composer
command can be found on https://github.com/composer/composer.
๐ Requirements
PHP Curl Class works with PHP 8.3, 8.2, 8.1, 8.0, and 7.4.
๐ Quick Start and Examples
More examples are available under /examples.
require __DIR__ . '/vendor/autoload.php'; use Curl\Curl; $curl = new Curl(); $curl->get('https://www.example.com/'); if ($curl->error) { echo 'Error: ' . $curl->errorMessage . "\n"; $curl->diagnose(); } else { echo 'Response:' . "\n"; var_dump($curl->response); }
// https://www.example.com/search?q=keyword $curl = new Curl(); $curl->get('https://www.example.com/search', [ 'q' => 'keyword', ]);
$curl = new Curl(); $curl->post('https://www.example.com/login/', [ 'username' => 'myusername', 'password' => 'mypassword', ]);
$curl = new Curl(); $curl->setBasicAuthentication('username', 'password'); $curl->setUserAgent('MyUserAgent/0.0.1 (+https://www.example.com/bot.html)'); $curl->setReferrer('https://www.example.com/url?url=https%3A%2F%2Fwww.example.com%2F'); $curl->setHeader('X-Requested-With', 'XMLHttpRequest'); $curl->setCookie('key', 'value'); $curl->get('https://www.example.com/'); if ($curl->error) { echo 'Error: ' . $curl->errorMessage . "\n"; } else { echo 'Response:' . "\n"; var_dump($curl->response); } var_dump($curl->requestHeaders); var_dump($curl->responseHeaders);
$curl = new Curl(); $curl->setFollowLocation(); $curl->get('https://shortn.example.com/bHbVsP');
$curl = new Curl(); $curl->put('https://api.example.com/user/', [ 'first_name' => 'Zach', 'last_name' => 'Borboa', ]);
$curl = new Curl(); $curl->patch('https://api.example.com/profile/', [ 'image' => '@path/to/file.jpg', ]);
$curl = new Curl(); $curl->patch('https://api.example.com/profile/', [ 'image' => new CURLFile('path/to/file.jpg'), ]);
$curl = new Curl(); $curl->delete('https://api.example.com/user/', [ 'id' => '1234', ]);
// Enable all supported encoding types and download a file. $curl = new Curl(); $curl->setOpt(CURLOPT_ENCODING , ''); $curl->download('https://www.example.com/file.bin', '/tmp/myfile.bin');
// Case-insensitive access to headers. $curl = new Curl(); $curl->download('https://www.example.com/image.png', '/tmp/myimage.png'); echo $curl->responseHeaders['Content-Type'] . "\n"; // image/png echo $curl->responseHeaders['CoNTeNT-TyPE'] . "\n"; // image/png
// Manual clean up. $curl->close();
// Example access to curl object. curl_set_opt($curl->curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1'); curl_close($curl->curl);
require __DIR__ . '/vendor/autoload.php'; use Curl\MultiCurl; // Requests in parallel with callback functions. $multi_curl = new MultiCurl(); $multi_curl->success(function($instance) { echo 'call to "' . $instance->url . '" was successful.' . "\n"; echo 'response:' . "\n"; var_dump($instance->response); }); $multi_curl->error(function($instance) { echo 'call to "' . $instance->url . '" was unsuccessful.' . "\n"; echo 'error code: ' . $instance->errorCode . "\n"; echo 'error message: ' . $instance->errorMessage . "\n"; }); $multi_curl->complete(function($instance) { echo 'call completed' . "\n"; }); $multi_curl->addGet('https://www.google.com/search', [ 'q' => 'hello world', ]); $multi_curl->addGet('https://duckduckgo.com/', [ 'q' => 'hello world', ]); $multi_curl->addGet('https://www.bing.com/search', [ 'q' => 'hello world', ]); $multi_curl->start(); // Blocks until all items in the queue have been processed.
More examples are available under /examples.
๐ Available Methods
Curl::__construct($base_url = null, $options = []) Curl::__destruct() Curl::__get($name) Curl::afterSend($callback) Curl::attemptRetry() Curl::beforeSend($callback) Curl::buildPostData($data) Curl::call() Curl::close() Curl::complete($callback) Curl::delete($url, $query_parameters = [], $data = []) Curl::diagnose($return = false) Curl::disableTimeout() Curl::displayCurlOptionValue($option, $value = null) Curl::download($url, $mixed_filename) Curl::error($callback) Curl::exec($ch = null) Curl::execDone() Curl::fastDownload($url, $filename, $connections = 4) Curl::get($url, $data = []) Curl::getAttempts() Curl::getBeforeSendCallback() Curl::getCompleteCallback() Curl::getCookie($key) Curl::getCurl() Curl::getCurlErrorCode() Curl::getCurlErrorMessage() Curl::getDownloadCompleteCallback() Curl::getDownloadFileName() Curl::getErrorCallback() Curl::getErrorCode() Curl::getErrorMessage() Curl::getFileHandle() Curl::getHttpErrorMessage() Curl::getHttpStatusCode() Curl::getId() Curl::getInfo($opt = null) Curl::getJsonDecoder() Curl::getOpt($option) Curl::getOptions() Curl::getRawResponse() Curl::getRawResponseHeaders() Curl::getRemainingRetries() Curl::getRequestHeaders() Curl::getResponse() Curl::getResponseCookie($key) Curl::getResponseCookies() Curl::getResponseHeaders() Curl::getRetries() Curl::getRetryDecider() Curl::getSuccessCallback() Curl::getUrl() Curl::getUserSetOptions() Curl::getXmlDecoder() Curl::head($url, $data = []) Curl::isChildOfMultiCurl() Curl::isCurlError() Curl::isError() Curl::isHttpError() Curl::options($url, $data = []) Curl::patch($url, $data = []) Curl::post($url, $data = '', $follow_303_with_post = false) Curl::progress($callback) Curl::put($url, $data = []) Curl::removeHeader($key) Curl::reset() Curl::search($url, $data = []) Curl::setAutoReferer($auto_referer = true) Curl::setAutoReferrer($auto_referrer = true) Curl::setBasicAuthentication($username, $password = '') Curl::setConnectTimeout($seconds) Curl::setCookie($key, $value) Curl::setCookieFile($cookie_file) Curl::setCookieJar($cookie_jar) Curl::setCookieString($string) Curl::setCookies($cookies) Curl::setDefaultDecoder($mixed = 'json') Curl::setDefaultHeaderOut() Curl::setDefaultJsonDecoder() Curl::setDefaultTimeout() Curl::setDefaultUserAgent() Curl::setDefaultXmlDecoder() Curl::setDigestAuthentication($username, $password = '') Curl::setFile($file) Curl::setFollowLocation($follow_location = true) Curl::setForbidReuse($forbid_reuse = true) Curl::setHeader($key, $value) Curl::setHeaders($headers) Curl::setInterface($interface) Curl::setJsonDecoder($mixed) Curl::setMaxFilesize($bytes) Curl::setMaximumRedirects($maximum_redirects) Curl::setOpt($option, $value) Curl::setOpts($options) Curl::setPort($port) Curl::setProtocols($protocols) Curl::setProxy($proxy, $port = null, $username = null, $password = null) Curl::setProxyAuth($auth) Curl::setProxyTunnel($tunnel = true) Curl::setProxyType($type) Curl::setRange($range) Curl::setRedirectProtocols($redirect_protocols) Curl::setReferer($referer) Curl::setReferrer($referrer) Curl::setRetry($mixed) Curl::setStop($callback = null) Curl::setTimeout($seconds) Curl::setUrl($url, $mixed_data = '') Curl::setUserAgent($user_agent) Curl::setXmlDecoder($mixed) Curl::stop() Curl::success($callback) Curl::unsetHeader($key) Curl::unsetProxy() Curl::verbose($on = true, $output = 'STDERR') MultiCurl::__construct($base_url = null) MultiCurl::__destruct() MultiCurl::addCurl(Curl $curl) MultiCurl::addDelete($url, $query_parameters = [], $data = []) MultiCurl::addDownload($url, $mixed_filename) MultiCurl::addGet($url, $data = []) MultiCurl::addHead($url, $data = []) MultiCurl::addOptions($url, $data = []) MultiCurl::addPatch($url, $data = []) MultiCurl::addPost($url, $data = '', $follow_303_with_post = false) MultiCurl::addPut($url, $data = []) MultiCurl::addSearch($url, $data = []) MultiCurl::afterSend($callback) MultiCurl::beforeSend($callback) MultiCurl::close() MultiCurl::complete($callback) MultiCurl::disableTimeout() MultiCurl::error($callback) MultiCurl::getActiveCurls() MultiCurl::getOpt($option) MultiCurl::removeHeader($key) MultiCurl::setAutoReferer($auto_referer = true) MultiCurl::setAutoReferrer($auto_referrer = true) MultiCurl::setBasicAuthentication($username, $password = '') MultiCurl::setConcurrency($concurrency) MultiCurl::setConnectTimeout($seconds) MultiCurl::setCookie($key, $value) MultiCurl::setCookieFile($cookie_file) MultiCurl::setCookieJar($cookie_jar) MultiCurl::setCookieString($string) MultiCurl::setCookies($cookies) MultiCurl::setDigestAuthentication($username, $password = '') MultiCurl::setFile($file) MultiCurl::setFollowLocation($follow_location = true) MultiCurl::setForbidReuse($forbid_reuse = true) MultiCurl::setHeader($key, $value) MultiCurl::setHeaders($headers) MultiCurl::setInterface($interface) MultiCurl::setJsonDecoder($mixed) MultiCurl::setMaximumRedirects($maximum_redirects) MultiCurl::setOpt($option, $value) MultiCurl::setOpts($options) MultiCurl::setPort($port) MultiCurl::setProxies($proxies) MultiCurl::setProxy($proxy, $port = null, $username = null, $password = null) MultiCurl::setProxyAuth($auth) MultiCurl::setProxyTunnel($tunnel = true) MultiCurl::setProxyType($type) MultiCurl::setRange($range) MultiCurl::setRateLimit($rate_limit) MultiCurl::setReferer($referer) MultiCurl::setReferrer($referrer) MultiCurl::setRequestTimeAccuracy() MultiCurl::setRetry($mixed) MultiCurl::setTimeout($seconds) MultiCurl::setUrl($url, $mixed_data = '') MultiCurl::setUserAgent($user_agent) MultiCurl::setXmlDecoder($mixed) MultiCurl::start() MultiCurl::stop() MultiCurl::success($callback) MultiCurl::unsetHeader($key) MultiCurl::unsetProxy() MultiCurl::verbose($on = true, $output = 'STDERR')
๐ Security
See SECURITY for security considerations.
๐ ๏ธ Troubleshooting
See TROUBLESHOOTING for help troubleshooting.
๐งช Testing
See TESTING for testing information.
๐ค Contributing
- Check for open issues or open a new issue to start a discussion around a bug or feature.
- Fork the repository on GitHub to start making your changes.
- Write one or more tests for the new feature or that expose the bug.
- Make code changes to implement the feature or fix the bug.
- Send a pull request to get your changes merged and published.