这里的根本问题是假设。
例如,假设这里有一个数组:
$test = [
\'foo\' => \'bar\'
];
如果我们跑步
echo $test[\'foo\'];
我们应该看到条形图,但如果我们运行
echo $test[\'bananas\'];
? 该数组中没有香蕉条目,因此PHP会注意到这一点,抛出一个与您看到的类似的警告/通知,然后用
\'\'
或
null
.
对象也会发生这种情况,例如,如果我们使用经典的post对象并尝试这样做:echo $post->odijfnvlkdsfnvlkjdsnvkljdfnv;
, 我们会收到警告/通知
您的代码也是如此。最有可能的是,代码调用API,但从不检查它是否成功,而只是假设它成功。或者,变量拼写错误。
你可以用警卫检查这些东西,比如if ( !empty( ... ) ) {
, 或者通过检查WP函数的返回值,查看它们是否返回了您期望的值,或者是否出现了问题。
会发生什么?我已回滚,但消息仍然显示。危险吗?
是或否,这可能会产生后果,这在很大程度上取决于你在做什么以及它如何相互作用。因为您假设值是好的,而不是好的,或者使用不存在的东西,PHP将替换占位符值。该值为false
-这可能会打乱你的逻辑,或导致意想不到的情况。这可能是神秘的错误,或者是利用安全性的途径。
最大的问题是当PHP配置为在前端显示这些警告时,这可能会破坏RESTXMLRPC和AJAX,以及任何更改HTTP头的操作
然而,最恼人的问题是,由于PHP错误日志会产生大量警告,因此几乎不可能进行调试。任何感兴趣的内容都会淹没在大量关于对象属性和数组键是不存在的访问的通知中。