asXML()执行成功未返回true,无效路径也未返回false的问题求助
问题出在你判断错了对象!
你现在踩了一个非常容易犯的小坑:你在判断$catXML这个SimpleXMLElement对象本身,而不是asXML()方法的返回值。
不管保存操作成功还是失败,$catXML始终是一个有效的对象(只要你之前成功创建了它),所以gettype($catXML)永远会返回object,!$catXML也永远为假——这就是为什么哪怕设置了无效路径,你的错误逻辑也不会触发的核心原因。
正确的做法:捕获asXML()的返回值
当你给asXML()传入文件名参数时,这个方法的返回值才是表示成功/失败的布尔值(成功返回TRUE,失败返回FALSE)。你需要把这个返回值存下来,再做判断:
// 把方法的返回值赋值给变量 $saveSuccess = $catXML->asXML('content/catalogue.xml'); // 用这个变量判断保存结果 if (!$saveSuccess) { // 目录未保存或路径无效 $responseHd = 'Sorry'; // ...这里写入你的错误处理逻辑 } else { // 保存成功的逻辑 }
额外小提醒
如果还是出现保存失败的情况,除了路径无效,还可能是这些原因:
- 目标目录没有写入权限
- 路径中的子目录不存在(
asXML()不会自动创建目录,你需要提前用mkdir()创建好)
内容的提问来源于stack exchange,提问作者Bob Pierce
相关产品推荐
相关产品推荐

