【问题标题】:PHP class method with closure CURL headers带有闭包 CURL 标头的 PHP 类方法
【发布时间】:2019-06-21 10:41:20
【问题描述】:

我有下面的课程,为了分析一个 URL

<?php
class URLFetcher {
    private $ch;
    private $url = '';

    public function __construct(string $url) {
        $this->url = $url;
    }

    public function fetch(): URLFetcher {
        $headers = [];
        $this->ch = curl_init($this->url);
        curl_setopt_array($this->ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
            CURLOPT_HEADERFUNCTION => function($curl, $header) use (&$headers) {
                var_dump($header);
                $header2 = trim($header);
                if($header2 !== '') $headers[] = $header2;
                return strlen($header);
            }
        ]);
        exit(var_dump($headers));
        return $this;
    }
}
?>

我在闭包中使用 var_dump 以查看标头,因为它们来自 CURL,最后,我再次使用 var_dump 以查看所有标头。

问题是函数中没有打印标题,最后,$headers 正在打印空数组。

如果我在没有课程的情况下执行此操作,则一切正常。我的问题是我错过了什么并且代码不起作用?我假设它与关闭有关。

【问题讨论】:

    标签: php curl closures


    【解决方案1】:

    您只是在方法结束时忘记了curl_exec($this-&gt;ch);

    public function fetch(): URLFetcher {
        $headers = [];
        $this->ch = curl_init($this->url);
        curl_setopt_array($this->ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0',
            CURLOPT_HEADERFUNCTION => function($curl, $header) use (&$headers) {
                $header2 = trim($header);
                if($header2 !== '') $headers[] = $header2;
                return strlen($header);
            }
        ]);
    
        curl_exec($this->ch);
    
        exit(var_dump($headers));
        return $this;
    }
    

    【讨论】:

    • 天哪!!!该死的复制粘贴。我觉得有点尴尬,我想我应该 :) 还是谢谢
    猜你喜欢
    • 2012-05-16
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2018-04-03
    • 2013-08-03
    • 2012-06-13
    • 2019-11-10
    相关资源
    最近更新 更多