2016-01-21 68 views
2

我有一个运行cURL的类内部的函数。在我正在使用的卷曲中:是否可以在类中使用cURL回调函数?

curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, '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的解决方案正在工作,只要确保您的回调函数没有任何错误。

回答

4

而是传入一个数组,其中第一个参数为对象的引用,第二个为函数名称。

curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, array($this, 'method')); 
+0

我得到相同的错误信息。我需要做其他更改吗? – HtmHell

+0

cURL的版本请 – Ohgodwhy

+0

cURL信息:'7.36.0' – HtmHell