调用非对象上的成员函数

时间:2015-08-11 10:07:32

标签: php domdocument

我需要创建一个基于url返回html的函数。

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

这实际上有效,但是我需要在其他几个函数中使用这个功能。所以我也可以用自己的方法获取内容。

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

致命错误:在a上调用成员函数getElementById()   非对象   [文件路径]   在非对象上调用成员函数getElementById()

为什么' $ site'一个非对象?它与第一个函数的值是否相同?

1 个答案:

答案 0 :(得分:3)

你的函数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;    
}