是否可以在类中使用cURL回调函数?

时间:2016-01-21 17:20:39

标签: php oop curl

我在运行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的解决方案正常运行,只需确保您的回调函数没有任何错误。

1 个答案:

答案 0 :(得分:8)

相反,传入一个数组,其中引用该对象作为第一个参数,函数名称作为第二个参数。

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