【问题标题】:return value from closure without reference从没有引用的闭包中返回值
【发布时间】:2016-02-03 15:27:21
【问题描述】:

我使用 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;

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

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

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

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

    * 这个答案假设你在一个类上下文中开始

    【讨论】:

    • 谢谢,但我想知道是否也可以不使用回调函数。有趣的是你可以使用$this,我想我最初使用的是&$this
    • 如果你想使用CURLOPT_HEADERFUNCTION 那么它需要一个回调,没有办法。如果您只想查看响应的标题,请查看this answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2013-07-04
    • 1970-01-01
    • 2019-02-01
    • 2016-11-12
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多