PHP:错误检查错误

时间:2011-12-13 16:37:57

标签: php dom error-handling domdocument

if($xml->getElementsByTagName($elmnt) && $xml->getElementsByTagName($elmnt)->length > 0)

此行旨在检查错误。我想要的是,而不是打破整个页面,制作一个清晰的错误信息。它包含在一个函数中,用于在失败时停止所有相关进程,如果不起作用,则继续显示页面的其余部分,因为页面布局不依赖于此函数是否成功。

  

致命错误:在第 100

file.php 中的非对象上调用成员函数getElementsByTagName()

我如何实际检查以确保所讨论的DOMDocument具有该元素而不会抛出上述错误?我尝试过只使用第一个条件或第二个条件。

var_dump($xml);

object(DOMDocument)#3 (1) {
  ["preserveWhitespace"]=>
  bool(false)
}

2 个答案:

答案 0 :(得分:0)

如果使用simplexml_load_file加载文件,它将以成功加载的方式返回,或者在失败时返回false。您收到的错误表示变量$ xml不是对象,这意味着当您尝试将xml文件加载到变量上时,它没有成功完成。

如果在执行getElementsByTagName($ elmnt)之前确定$ xml不是false,则不应该出现错误致命错误:在非对象上调用成员函数getElementsByTagName()在第100行的file.php中

if (file_exists('test.xml')) {
    $xml = simplexml_load_file('test.xml');
    if($xml){
        print_r($xml);
    }
} else {
    exit('Failed to open test.xml.');
}

答案 1 :(得分:0)

你的问题是$xml不是一个对象,你必须先检查一下:

if ($xml && ($obj = $xml->getElementsByTagName($elmnt)) && $obj->length > 0) {
    // you should be good as this point
}

如果!empty($xml)未定义,可以使用$xml代替$xml