使用Bronto预先编写的代码,它构建一个soap客户端,在其上调用一个函数,然后解析结果。解析代码如下所示:
if ($write_result->errors) {
print "There was a problem adding or updating the contact:\n";
print_r($write_result->results);
exit;
} elseif ($write_result->results[0]->isNew == true) {
print "The contact has been added. Id: " . $write_result->results[0]->id . "\n";
} else {
print "The contact's information has been updated. Id: " . $write_result->results[0]->id . "\n";
}
每当出现ARE错误时,它们都会被第一个if语句捕获并打印出来。但是当出现ARE NOT错误时,控制台会打印出“Notice:Undefined property:stdClass :: $ errors”消息。这是正确的吗?有没有办法关掉通知?它不会导致任何问题,但我可以看到它会如何混淆非技术性读取输出日志。
答案 0 :(得分:2)
检查属性是否存在而不是直接访问它:
if (isset($write_result->errors))
或检查它是否存在和一次不为空(只是为了确保API更改并提供实际的空数组或空字符串,如果没有发生错误):
if (!empty($write_result->errors))
答案 1 :(得分:1)
首先检查属性是否存在:
if (property_exists($write_result, 'errors') && $write_result->errors)
{
// ...
}
请参阅:property_exists
。
答案 2 :(得分:1)
您可以先检查property exists:
if (property_exists($write_result, 'errors'))