Ошибка в php Trying to get property of non-object

174
09 февраля 2018, 21:38

Делаю парсер который из https://habrahabr.ru будет парсить последний пост в каждом из самостоятельно заданных хабов.

Ошибка :

Trying to get property of non-object in C:\xampp\htdocs\Parser\class.php on line 44

Это класс использующийся для этого:

class Parser {
        public $hubs = array(
            'infosecurity'=>"https://habrahabr.ru/hub/infosecurity/",
            'programming' =>"https://habrahabr.ru/hub/programming/",
            'webdev'=>"https://habrahabr.ru/hub/webdev/",
            'linux'=>"https://habrahabr.ru/hub/linux/",
            'algorithms'=>"https://habrahabr.ru/hub/algorithms/"
            ); 
        public $links = array(
            'infosecurity' => "",
            'programming' => "",
            'webdev' => "",
            'linux' => "",
            'algorithms' =>""
            );
        public $headers = array(
            'infosecurity' => "",
            'programming' => "",
            'webdev' => "",
            'linux' => "",
            'algorithms' =>""
            );
        public $texts = array(
            'infosecurity' => "",
            'programming' => "",
            'webdev' => "",
            'linux' => "",
            'algorithms' =>""
            );
        //функция принимает аргументы страницу и тэг(класс), тип возвр значения и возвращает содержимое тэга
        public function get_article_link($page_link, $tag, $type) {
            $html = get_curl($page_link);//получаем html 
            $dom = str_get_html($html);// создает для каждого тэга свой обьект
            $article = $dom->find($tag);//ссылка на статью
            return $article[0]->$type.'<br>';            
        }
        public function get_content($page_link, $tag, $type) {
            $html = get_curl($page_link);//получаем html 
            $dom = str_get_html($html);// создает для каждого тэга свой обьект
            $article = $dom->find($tag);//ссылка на статью
            //var_dump($article);
            return  $article[0]->$type.'<br>';   // строка ошибки           
        }
    }

При обращении к методам класса и передачи им параметра ссылки на статьи возникает упомянутая ошибка

foreach ($Habr->links as $key => $value) {
       // Обрезаем содержимое до первого "/" чтобы получить заголовок
//        
        $title =  $Habr ->get_content($Habr->links["$key"], 'title', 'plaintext');    
        $str = strpos($title, "/");
        $title = substr($title, 0, $str);
        $Habr->headers[$key] = $title;
        //Выводим заголовок 
        echo "<br><b>TITLE : </b><br>".$title."<br>";
        //выводим текст статьи 
        $text = $Habr ->get_content($Habr->links[$key], '.post__text', 'plaintext');
        $Habr->texts[$key] = $text;
        echo "<b>TEXT OF PAGE:<br></b>".$Habr->texts[$key]."<br>";         
        }

Ошибка в выражении $Habr->links[$key], потому что если вместо него подставить ссылку в виде строки ошибки не будет.

Результат var_dump($Habr->links) :

 array(5) { 
      ["infosecurity"]=> string(55) "https://habrahabr.ru/company/kaspersky/blog/348572/ "
     ["programming"]=> string(37) "https://habrahabr.ru/post/348656/ "
     ["webdev"]=> string(52) "https://habrahabr.ru/company/skyeng/blog/348606/ "
     ["linux"]=> string(51) "https://habrahabr.ru/company/flant/blog/348324/ "
    ["algorithms"]=> string(37) "https://habrahabr.ru/post/348530/ " 
 }
READ ALSO
Установить php 5.6 на xampp - windows 2003

Установить php 5.6 на xampp - windows 2003

Всем приветЕсть VPS сервер на windows 2003

233
Не корректный ответ при ajax

Не корректный ответ при ajax

При клике по кнопке на сайте должна происходить подгрузка дополнительного контентаAJAX запрос ниже:

208
OpenGL, FreeType2: символы перекрывают друг друга

OpenGL, FreeType2: символы перекрывают друг друга

Пытаюсь использовать библиотеку FreeType (v2) для 2Д отрисовки в OpenGL (v41) сцене на языке C++

213