PHP:错误检查错误


PHP: Error in Error Checking

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

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

致命错误:在file.php online 100中调用非对象的成员函数getElementsByTagName()

我如何实际检查以确保有问题的DOMDocument具有元素而不会抛出上面的错误?我试过只使用第一种条件或第二种条件。

var_dump($xml);

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

如果您使用simplexml_load_file来加载文件,它将返回一个成功的加载或失败时返回false。您得到的错误表明变量$xml不是一个对象,这意味着当您试图将xml文件加载到该变量时,它没有成功。

如果在你做getElementsByTagName($elmnt)之前,你确保$xml不是假的,你不应该得到错误致命错误:调用一个成员函数getElementsByTagName()在file.php的非对象在第100行

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

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

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

如果$xml可能未定义,您也可以使用!empty($xml)而不是$xml