Функция внутри функции не может найти переменную - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь использовать функцию заголовка curl из класса.Я попытался поместить функции внутри класса нормально, но 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');

Когда я помещаю выражение echo в htWrite для буфера, оно выводится просто отлично.Но если я сделаю оператор print_r для $ ht позже, он скажет, что он пуст.Дальнейшие исследования говорят, что он создает свою собственную переменную $ ht, потому что если я удалю эту строку, $ ht будет нулевым в соответствии с функцией.Так что я могу сделать, чтобы это исправить?

1 Ответ

2 голосов
/ 09 января 2012

Вам нужно посмотреть, как вы можете указать методы объекта как обратные вызовы :

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'));
    }
}
...