从没有引用的闭包返回值

时间:2016-02-03 15:27:22

标签: php

我使用curl选项CURLOPT_HEADERFUNCTION和一个闭包来执行一些基本的数据操作。根据php文档,函数/回调必须在每次调用时返回标题的长度。

    $headers = [];

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADERFUNCTION, function($curl, $headerLine) use (&$headers) {
        $headers[] = $headerLine;

        return strlen($headerLine);
    });

    $response = curl_exec($curl);
    curl_close($curl);

    return $headers;

我正在使用引用返回正常工作的值。我很好奇是否有其他方法可以在不使用引用或使用回调的情况下返回此值?

1 个答案:

答案 0 :(得分:2)

您可以将回调函数指定为类方法:

curl_setopt($curl, CURLOPT_HEADERFUNCTION, array($this, 'someOtherFunction'));

在其他功能中,您可以访问$this有权访问的任何内容:

protected function someOtherFunction($curl, $headerLine)
{
    $this->headers[] = $headerLine;

    return strlen($headerLine);
}

*此答案假设您在

开头的类上下文中