在我的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 :(得分:1)
问题是您尝试访问$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 :(得分:0)
您的$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;
答案 2 :(得分: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];
}
}
另外,connectenParse可能应该是__construct($loginPage, $header)
不推荐使用类名构造函数。