调用非对象的成员函数
Call to a member function on a non-object
我需要创建一个函数 returns html 基于 url.
function start()
{
$url = "http://dostuff.com";
$site = new \DOMDocument();
$site->loadHTML(file_get_contents($url));
//do stuff with it
$listview = $site->getElementById('colLeft');
var_dump($this->getValuesOfAttribute($listview,'a','href'));
}
这确实有效,但是我需要在其他几个地方使用这个功能functions.So我也可以用它自己的方法获取内容。
public function start()
{
$site = $this->getHTMLByURL("http://dostuff.com");
//do stuff with it
$listview = $site->getElementById('colLeft');
var_dump($this->getValuesOfAttribute($listview,'a','href'));
}
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
return $site->loadHTML(file_get_contents($url));
}
Fatal error: Call to a member function getElementById() on a
non-object in
[file_path]
Call to a member function getElementById() on a non-object
为什么“$site”不是对象?它与第一个函数的值不一样吗?
您的函数 getHTMLByUrl
没有返回您认为的结果。
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
return $site->loadHTML(file_get_contents($url));
}
它返回 loadHTML
调用的布尔结果,而不是对象。
有关文档,请参阅 here。
您需要做的是:
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
$site->loadHTML(file_get_contents($url));
return $site;
}
我需要创建一个函数 returns html 基于 url.
function start()
{
$url = "http://dostuff.com";
$site = new \DOMDocument();
$site->loadHTML(file_get_contents($url));
//do stuff with it
$listview = $site->getElementById('colLeft');
var_dump($this->getValuesOfAttribute($listview,'a','href'));
}
这确实有效,但是我需要在其他几个地方使用这个功能functions.So我也可以用它自己的方法获取内容。
public function start()
{
$site = $this->getHTMLByURL("http://dostuff.com");
//do stuff with it
$listview = $site->getElementById('colLeft');
var_dump($this->getValuesOfAttribute($listview,'a','href'));
}
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
return $site->loadHTML(file_get_contents($url));
}
Fatal error: Call to a member function getElementById() on a non-object in [file_path] Call to a member function getElementById() on a non-object
为什么“$site”不是对象?它与第一个函数的值不一样吗?
您的函数 getHTMLByUrl
没有返回您认为的结果。
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
return $site->loadHTML(file_get_contents($url));
}
它返回 loadHTML
调用的布尔结果,而不是对象。
有关文档,请参阅 here。
您需要做的是:
public function getHTMLByURL($url)
{
$site = new \DOMDocument();
$site->loadHTML(file_get_contents($url));
return $site;
}