в моем php-коде я получаю эту ошибку
Notice: Undefined variable: browserHeader in connectenparse.class.php on line 12
и мой код начинается здесь со строки 9
private $browserHeader = array ( "'0' => Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
public function connectenParse($loginPage, $header=''){
$this->loginPage = $loginPage;
$this->browserHeader = $browserHeader[$header];
}
Мой вклад
$run = new connectenParse('http://example.com','0');
echo $run->streamParser();
Функция streamParser принимает переменную end и возвращает ее. Когда я создаю класс со вторым параметром, который определен для заголовка браузера, он должен вернуть Mozilla / 5.0. В чем проблема?
Мой совет, что вам не нужно $browserHeader
быть массивом — это, очевидно, строка и устанавливать ее по мере необходимости.
private $browserHeader;
public function connectenParse($loginPage, $header=''){
$this->loginPage = $loginPage;
$this->browserHeader = $header;
}
Тогда вы можете назвать это как
$run = new connectenParse('http://example.com', "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
Если вам нужен массив для нескольких других потенциальных заголовков, то вам нужно исправить свой массив
const BROWSER_HEADER_LIST = array ("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)");
Обратите внимание, что это не («0 => …») делает его частью значения. Также это const означает, что вы используете его при необходимости.
Так что теперь вы можете сделать что-то вроде этого
//Still have this variable
private $browserHeader;
//use numbers not strings for $header.
public function connectenParse($loginPage, $header=null){
$this->loginPage = $loginPage;
if($header !== null){
$this->browserHeader = self::BROWSER_HEADER_LIST[$header];
}
}
Кроме того, connectctenParse, вероятно, должен быть __construct($loginPage, $header)
конструкторы имен классов устарели.
Проблема в том, что вы пытаетесь получить доступ к $header
элемент $browserHeader
массив, никогда не определяя $browserHeader
массив:
public function connectenParse($loginPage, $header=''){
$this->loginPage = $loginPage;
$this->browserHeader = $browserHeader[$header];
}
В третьей строке вы присваиваете значение $this->browserHeader
, что совершенно нормально, но назначаемое вами значение $browserHeader[$header]
, $header
существует, однако этот метод не знает ни о какой переменной $browserHeader
Вот почему вы видите ошибку. Вы, вероятно, хотите сделать следующее:
$this->browserHeader = $header;
Ваш $browerheader
переменная должна быть такой
private $browserHeader = array ("Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html");
Если вы проходите $header
значение для вызова функции, вы должны использовать
$this->browserHeader = isset($this->$browserHeader[$header]) ? $this->$browserHeader[$header] : $this->$browserHeader[0];
Если $header
это строка, вы можете использовать ее следующим образом
$this->$browserHeader = $header;