[英]Using CURLOPT_HTTPHEADER with an Object
使用 PHP 的 curl API 时,如果我不小心使用了带有CURLOPT_HTTPHEADER
curl 选项的字符串
curl_setopt($ch, CURLOPT_HTTPHEADER, 'User-Agent: php-curl');
PHP会骂我
警告:curl_setopt():您必须在第 32 行的 /path/to/test.php 中传递带有 CURLOPT_HTTPHEADER 参数的对象或数组
我知道我可以使用数组解决这个问题
$headers = [];
$headers[] = 'User-Agent: php-curl';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
但是,警告似乎表明我也可以传递curl_setopt
一个对象。 这可能吗?
我已经尝试过 stdClass
和ArrayObject
,但似乎都不起作用。这只是一个误导性的警告消息,还是有办法将curl_setopt
与对象一起使用?
更新结果我安装了一个阻止标准行为的 PHP 扩展。 ArrayObjects 在这个函数中工作正常。 我无法关闭或删除这个问题,所以希望这个警告能避免混淆。
您需要传递一个实现JsonSerializable的对象。
class Testing implements JsonSerializable
{
protected $headers = [];
public function __construct($headers)
{
$this->headers = $headers;
}
public function jsonSerialize()
{
return $this->headers;
}
}
然后你可以将它传递给你的CURLOPT_HTTPHEADER参数:
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, new Testing(['User-Agent: php-curl']));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.