调用非对象的成员函数

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