当我学习PHP时,我被教导使我的代码没有错误,但仍然隐藏生产代码中的错误以确保干净的用户体验。
我最近参与了一些项目,其中原作者采取了留下错误和警告的方法,甚至利用它们来实现某些目标,而不是在没有它的情况下编写代码。
例如,代码如下所示:
$numm = 0;
while($numm < 10){
$var = "something,".$var;
$numm++;
}
此代码将在循环中第一次抛出非致命Notice
,因为第一次连接不存在$ var。
还有很多其他例子,他们要么忽略错误,要么利用它们(结束循环等),然后将它们隐藏起来。
对我而言,这似乎是不好的做法,但我可能只是强迫症。
答案 0 :(得分:5)
通知是一个等待发生的错误。我经常使用error_reporting(E_ALL);
set运行开发。我想在它们出现问题之前找到它们,而不是简单地忽略这些问题,无论是否存在问题。
答案 1 :(得分:0)
在while循环中设置isset($ var)的要求。
答案 2 :(得分:0)
我一直觉得讨厌的一件事就是:
$var = isset($var) ? "something,".$var : "something,";
当您考虑可能的使用次数时,这一个衬垫将防止错误但不是理想的方式。想象一个返回的关联数组并不总是具有你期望设置的所有键/值。
我对几乎所有应用程序采取的一种方法是创建和使用以下功能:
function rtnVal(&$val, $default = null){
return isset($val) ? $val : $default;
}
所以在这种情况下,我所要做的就是:
$var = "something,".rtnVal($var);
容易不是吗?如果你不知道,定义
function rtnVal(&$var) { ... }
而不是:
function rtnVal($var) { ... }
(注意&amp;符号)意味着$ var是一个'占位符'(通过引用传递)而不是实际传递。因此,当您使用它时,不必事先设置它。
虽然有一个限制,那就是使用Objects,他们不喜欢通过这种方式通过引用传递,所以对于那些人,我还没有找到更好的解决方案。