Я пишу класс-оболочку для cURL, который, когда вы устанавливаете параметр, сохраняет имя параметра в массиве, чтобы я мог управлять настройками.Получить постоянное имя как строку
Проблема в том, что с именами опций cURL являются константами, они фактически являются целыми числами, поэтому я не могу сказать, какие параметры были установлены.
Отрывок из класса:
class Curl {
protected $_options;
public function setOption($name, $value) {
$result = curl_setopt($this->_handle, $name, $value);
if ($result) {
$this->_options[$name] = $value;
}
return $result;
}
}
Скажем, я установить следующие параметры:
array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_HEADER => 0,
CURLOPT_POST => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 30
)
Curl::_options
будет выглядеть следующим образом:
array(
(int) 78 => (int) 10,
(int) 42 => (int) 0,
(int) 47 => (int) 1,
(int) 19913 => (int) 1,
(int) 13 => (int) 30
)
Как я могу получить фактические имена констант cURL? Возможно ли это с помощью Reflection class?
Reflection хотел бы получить это, как может, используя PHP tokeniser –
Я не думаю, что можно получить имя константы по ее значению - например, что делать, если многие константы имеют одно и то же значение? Вы можете, конечно, пройти долгий путь: сначала вызовите [get_defined_constants] (http://php.net/manual/en/function.get-defined-constants.php), а затем переверните полученный массив. Реальный вопрос: зачем вам это нужно? – raina77ow
@MarkBaker Пример из любого из них? @ raina77ow Я не хочу получать имя константы по ее значению, я хочу получить постоянное имя 'CURLOPT_CONNECTTIMEOUT' как литеральную строку' 'CURLOPT_CONNECTTIMEOUT''. – BadHorsie