2014-02-02 3 views
0

Я использую simple_html_dom как этотКак избежать "на не-объект в *** ошибки

$html = new \simple_html_dom(); 
$html->load_file($url); 
$html->find('a') 

затем Sometims эту ошибку происходит

Fatal error: Call to a member function find() on a non-object in /src/Acme/TopBundle/Command/simple_html_dom.php on line 1146 

его OK. Я думаю, может случиться так, что load_file не сможет получить содержимое url;

но, я хочу передать эту ошибку и продолжить процесс.

поэтому я сменил сценарий следующим образом.

$html = new \simple_html_dom(); 
$html->load_file($url); 

if (!$html){ 
      return null; 
} 
$html->find('a') 

но он все еще возвращает ошибку и останавливается.

как я могу передать эту ошибку?

+0

Вы не хотите игнорировать ошибку! вам нужно выяснить, почему это происходит, иначе вы никогда не будете разбирать файл, и скрипт будет бесполезен. – gwillie

+0

Я не знаю simple_html_dom, но это довольно плохое поведение, когда объект уничтожается предыдущим вызовом одного из его методов. Возможно, DOMDocument работает лучше для вас. – SenseException

ответ

1

Использование is_object:

$html = new \simple_html_dom(); 
$html->load_file($url); 

if (!is_object($html){ 
      return null; 
} 
$html->find('a') 
+0

спасибо is_object работает хорошо! – whitebear

0

Вы также можете сделать определенную проверку и использовать GetType.

<?php 
require('simple_html_dom.php'); 

$html = new \simple_html_dom(); 
$html->load_file('http://www.bensoft.com/'); 
if (defined($html) && gettype($html) == 'object') { 
    $html->find('a'); 
} 
?> 
Смежные вопросы