1. Go to this page and download the library: Download eypsilon/curler library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eypsilon / curler example snippets
use Many\Http\Curler;
/**
* @var array Simple get
*/
$c = (new Curler)->get('https://example.com/');
print $c['response'];
/**
* @var string with Auth creds
*/
$xc = (new Curler)
->authAny('user', 'pass')
->post(
json_encode([
'lorem_ipsum' => 'Dolor Sit Amet',
])
)
->responseOnly() // returns $xc['response']
->exec('/api/usr');
print $xc;
/**
* @var array Set Configs and Defaults
*/
Curler::setConfig([
'response_only' => false, // returns the response content as is
'curl_trace' => false, // track requests, (GET) Curl::getCurlTrace()
'exceptions' => false, // enable Exceptions
'meta' => false, // enable meta data
'request_info' => false, // [getallheaders(), $_SERVER] in 'meta'
'curl_info' => false, // CURL generated infos about the request in 'meta'
// Default URL, will be prefixed to each request URL, disable with: ->disableDefaultUrl()
'default_url' => null, // 'https://example.com'
'date_format' => 'Y-m-d H:i:s.u',
// Convert images to valid data strings (no defaults defined)
'image_to_data' => [], // 'image/jpeg', 'image/png', 'image/webp', 'image/gif', 'image/x-icon', 'image/svg+xml', ...
// Send default headers (no defaults defined)
'default_header' => [], // 'x-powered-by' => 'Many/Curler',
// Add/overwrite CURL default options, see Curl::getOptions()
'default_options' => [
CURLINFO_HEADER_OUT => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
CURLOPT_URL => null,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => [],
CURLOPT_POST => false,
CURLOPT_POSTFIELDS => null, // (string) http_build_query($str)
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_VERBOSE => true,
CURLOPT_AUTOREFERER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_CONNECTTIMEOUT => 90,
CURLOPT_TIMEOUT => 90,
CURLOPT_ENCODING => 'gzip',
CURLOPT_USERAGENT => 'Many/Curler',
],
// Set a callback function, that gets fired after first curl_exec(), eg. for logging
'default_callback' => [], // => ['print_r', true],
]);
/**
* @var mixed Extended example with available methods
*/
$curl = (new Curler)
->method('post') // Set http method, default is "get"
->url('http://example.com') // Set target url or path, same as ->exec(URL)
/**
* Misc */
->disableDefaultUrl() // If default_url is setted, disable for this instance
->responseOnly() // Returns CURL response content only
->requestInfo() // getallheaders(), $_SERVER
->curlInfo() // curl_getinfo()
/**
* Set CURL Options */
->setOpt(CURLOPT_ENCODING, 'zip')
->setOpt(CURLOPT_USERAGENT, 'Many/Curler')
->setOpt(CURLOPT_AUTOREFERER, false)
// array alternate
->setOptArray([
CURLOPT_ENCODING => 'zip',
CURLOPT_USERAGENT => 'Many/Curler',
CURLOPT_AUTOREFERER => false,
])
/**
* Header */
->header([
'Authentication' => 'Many pw.2345', // 'Authentication: Many pw.2345'
'Authentication' => ['Many', 'pw.2345'], // 'Authentication: Many pw.2345'
])
/**
* HTTP Auth */
->httpAuth(CURLAUTH_BASIC) // protection type
->userPwd('user', 'pass') // or ('user:pass')
// CURLAUTH_ANY (.htaccess, uses basic or digest)
->authAny('user', 'pass')
// CURLAUTH_BASIC
->authBasic('user', 'pass')
// CURLAUTH_DIGEST
->authDigest('user', 'pass')
// CURLAUTH_BEARER (?user optional, not .htaccess)
->authBearer('token.lr.72.m', '?user')
/**
* Sets CURLOPT_CUSTOMREQUEST=POST and CURLOPT_POST=true internally.
* Arrays will be converted to strings using http_build_query() */
->post([
'lorem_ipsum' => 'dolor sit amet',
])
/**
* Set postfields avoiding internally setted stuff to send data as body
* content, eg PUT. This class uses http_build_query(), if an array is
* given. Convert to any string format that fits your needs */
->postFields(
json_encode([
'lorem_ipsum' => 'dolor sit amet',
])
)
/**
* Callback, run multiple callbacks through chaining in the given order.
* Each callback will use the resulting content from the previous one. */
->callback('json_decode', true) // any PHP internal function
->callback('curlCallback') // custom function
// Custom class
->callback('CallbackClass::run') // (static) class::run()
->callback('CallbackClass::class', 'init') // (new class)->init() # init() could be any method
->callback(CallbackClass::class, 'init') // (new class)->init()
// Closure
->callback(function($response) {
// Do stuff with $response here and
return $response;
})
// Pre validated callbacks, set simple validator functions to pre-validate the content.
// If Exceptions are enabled, throws Exceptions on fail, otherwise function gets ignored
->callbackIf(['\Many\Http\Curler::isJson'], 'json_decode', true)
->callbackIf(['\Many\Http\Curler::isJsonObj'], 'json_encode')
->callbackIf(['is_string'], 'json_decode')
// Shorthands
->jsonDecode(true) // Shorty for json_decode()
->jsonEncode(JSON_PRETTY_PRINT) // Shorty for json_encode()
->htmlChars() // Shorty for htmlspecialchars()
->htmlSpecialChars() // Shorty for ->htmlChars()
/**
* Final execs, getter */
->exec() // OR
->exec('/api/endpoint', [
CURLOPT_USERAGENT => 'AwesomeCurler', // set any CURL option here
])
/**
* Alternate exec aliases. They all sets their name as REQUEST_METHOD
* internally. You can use ->postFields(json_encode([])) to send content
* additionally in the body. */
->delete() // OR
->delete('/api/endpoint', [/* ... */])
->get()
->get('/api/endpoint', [/* ... */])
->patch()
->patch('/api/endpoint', [/* ... */])
->put()
->put('/api/endpoint', [/* ... */])
Curler::setConfig([
'curl_trace' => true,
]);
/** @var array Get all CURL requests with timestamps in an array */
$curlGetTrace = Curler::getCurlTrace();
/** @var int Get total amount of requests done so far */
$curlsTotal = Curler::getCurlCount();
/** @var array Get Config */
$curlGetConfig = Curler::getConfig();
/** @var array Get curl_setopt(), (true) all available CURL constants */
$curlGetOptions = Curler::getOptions(true);
/** @var mixed Get body content, (true) parsed to array */
$curlGetBodyContent = Curler::getBodyContent(true);
/** @var bool Check if val is JSON format */
$isJson = Curler::isJson('{}', true); // (true) strict mode
/** @var bool Check if val is valid JSON Object (is_array or is_object) */
$isJsonObj = Curler::isJsonObj([]);
/** @var string Readable Bytes */
$memUsage = Curler::readableBytes(memory_get_usage());
/** @var string Datetime with microseconds (microtime(true), $_SERVER['REQUEST_TIME_FLOAT']) */
$microDate = Curler::dateMicroSeconds(null, 'Y-m-d H:i:s.u');
/** @var string Get difference between two Dates with microseconds */
$microDateDiff = Curler::dateMicroDiff(
Curler::dateMicroSeconds($_SERVER['REQUEST_TIME_FLOAT']), // script started (microtime(true))
Curler::dateMicroSeconds(), // current microtime(true)
'%s.%f'
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.