curl-easy / event dispatcher lib
This commit is contained in:
committed by
Steffen Schröder
parent
15f0164287
commit
244428a2fe
68
application/core/Libs/curl-easy/cURL/Options.php
Normal file
68
application/core/Libs/curl-easy/cURL/Options.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
namespace cURL;
|
||||
|
||||
class Options extends Collection
|
||||
{
|
||||
/**
|
||||
* @var array Array of cURL constants required for intelligent setters
|
||||
*/
|
||||
protected static $curlConstantsTable = array();
|
||||
|
||||
/**
|
||||
* Applies options to Request object
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function applyTo(Request $request)
|
||||
{
|
||||
if (!empty($this->data)) {
|
||||
curl_setopt_array($request->getHandle(), $this->data);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares array for intelligent setters
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function loadCurlConstantsTable()
|
||||
{
|
||||
$constants = get_defined_constants(true);
|
||||
$table = array();
|
||||
foreach ($constants['curl'] as $key => $value) {
|
||||
if (strpos($key, 'CURLOPT_') === 0) {
|
||||
$key = str_ireplace(array('CURLOPT', '_'), '', $key);
|
||||
$table[$key] = $value;
|
||||
}
|
||||
}
|
||||
self::$curlConstantsTable = $table;
|
||||
}
|
||||
|
||||
/**
|
||||
* Intelligent setters
|
||||
*
|
||||
* @param string $name Function name
|
||||
* @param array $args Arguments
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function __call($name, $args)
|
||||
{
|
||||
if (substr($name, 0, 3) == 'set' && isset($args[0])) {
|
||||
if (empty(self::$curlConstantsTable)) {
|
||||
self::loadCurlConstantsTable();
|
||||
}
|
||||
$const = strtoupper(substr($name, 3));
|
||||
if (isset(self::$curlConstantsTable[$const])) {
|
||||
$this->data[self::$curlConstantsTable[$const]] = $args[0];
|
||||
return $this;
|
||||
} else {
|
||||
throw new Exception('Constant CURLOPT_'.$const.' does not exist.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user