我在运行cURL的类中有一个函数。在我正在使用的cURL中:
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'progress');
progress函数在类中,并使用其属性及其方法。 ($this->property
,$this->method()
)
当我运行脚本时,收到以下错误消息:
Warning: curl_exec(): Cannot call the CURLOPT_PROGRESSFUNCTION in ...
所以问题是:我可以这样做吗?如果是这样,怎么样?
修改 我试图将代码更改为:
$ref =& $this;
curl_setopt($ch,
CURLOPT_PROGRESSFUNCTION,
function($resource, $download_size, $downloaded, $upload_size, $uploaded) use ($ref)
{
$ref->progress($resource, $download_size, $downloaded, $upload_size, $uploaded);
}
);
但我仍然遇到同样的错误。
更新: @Ohgodwhy的解决方案正常运行,只需确保您的回调函数没有任何错误。
答案 0 :(得分:8)
相反,传入一个数组,其中引用该对象作为第一个参数,函数名称作为第二个参数。
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, array($this, 'method'));