函数内部函数无法查找变量

时间:2012-01-09 03:03:52

标签: php oop curl libcurl

我正在尝试使用类中的curl headerfunction选项。我已经尝试将函数正常放在类中,但curl无法找到它们。所以我将它们放在我需要它的函数中。这是适用的代码部分:

    $ht = array();
    $t = array();
    function htWrite($stream,$buffer)
    {
        $ht[] = $buffer;
        return strlen($buffer);
    }
    function tWrite($stream,$buffer)
    {
        $t[] = $buffer;
        return strlen($buffer);
    }

    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'htWrite');
    curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'tWrite');

当我在htWrite中为缓冲区放置一个echo语句时,它回复得很好。但是如果我稍后在$ ht上做一个print_r语句,它会说它是空的。进一步调查显示它正在创建自己的$ ht变量,因为如果我删除该行,则根据函数$ ht为null。那么我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

您需要了解如何将对象方法指定为callbacks

class Foo {
    public function Bar() {
        // do whatever
    }

    public function Test() {
        $ch = curl_init('http://www.google.com');
        curl_setopt($ch, CURLOPT_HEADERFUNCTION, array($this, 'Bar'));
    }
}