我在我的代码的第71行收到此错误,但是这行的功能正确执行,它完成了我期望它做的事情。
但是,我注意到我的错误日志中充满了这些行:
[09-Dec-2013 14:54:02 UTC] PHP致命错误:在第71行的/home/sportve/public_html/open_event_common.php中调用非对象上的成员函数find()
我检查过的内容:
simple_html_dom_parser
已经包含在内,而第71行打算执行此功能正在运行。
以下是我的代码的第71行:
$content->find('a.openevent', 0)->innertext = '';
因此导致此错误出现在我的错误日志文件中的原因令人困惑吗?
编辑:这是完整的代码:
<?php
$url = "static/" . $cat_map[$cat]['url'];
$html = file_get_html($url);
$content = $html->find('div#event-pane > div#e' . $event_id, 0);
$content->find('a.openevent', 0)->innertext = '';
$content->find('h3.lshtitle', 0)->onclick = '';
$content->find('h3.lshtitle', 0)->tag = 'div';
$content->find('div.lshtitle', 0)->class = 'ttl';
?>
答案 0 :(得分:15)
根据您提供的最佳和最实用的解决方案,只需检查$html
和$content
是否为空。
当你得到一个“调用一个成员函数[无论函数是什么]对非对象”时,10次中有9次,这基本上意味着该对象不存在。意味着变量是空的。这是你的代码重做:
$url = "static/" . $cat_map[$cat]['url'];
if (!empty($url)) {
$html = file_get_html($url);
if (!empty($html)) {
$content = $html->find('div#event-pane > div#e' . $event_id, 0);
if (!empty($content)) {
$content->find('a.openevent', 0)->innertext = '';
$content->find('h3.lshtitle', 0)->onclick = '';
$content->find('h3.lshtitle', 0)->tag = 'div';
$content->find('div.lshtitle', 0)->class = 'ttl';
}
}
}
另外,我添加了一项检查,看看$url
是否也是空的。