Объявление массива PHP с определением класса

в моем 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. В чем проблема?

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) конструкторы имен классов устарели.

0

Другие решения

Проблема в том, что вы пытаетесь получить доступ к $header элемент $browserHeader массив, никогда не определяя $browserHeader массив:

public function connectenParse($loginPage, $header=''){
$this->loginPage = $loginPage;
$this->browserHeader = $browserHeader[$header];
}

В третьей строке вы присваиваете значение $this->browserHeader, что совершенно нормально, но назначаемое вами значение $browserHeader[$header], $header существует, однако этот метод не знает ни о какой переменной $browserHeaderВот почему вы видите ошибку. Вы, вероятно, хотите сделать следующее:

$this->browserHeader = $header;

1

Ваш $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;
0
По вопросам рекламы [email protected]