良好的编程实践:引用数组

时间:2012-01-02 23:23:41

标签: php coding-style

这个问题与我使用PHP的经历有关,但没有理由不适用于其他语言。

在测试期间设置了ERROR_REPORTING(E_ALL);,我注意到我有一些通知,例如Notice: Undefined offset: 0 in ChrisW/public_html/admin.php on line 122。这是因为我在数组中存储有关表单的警告(未填充值,无效值等),然后访问它们:

echo $errorsArray[0] . '<label for="name" id="name-label">Your Name</label>
<input id="name" name="name" value="' . $name . '" />';

我的验证函数中的错误数组为$errorsArray = array($nameError, $emailError);。第一次加载页面时,我会显示以下表单:

if(count($_POST) == 0)
{
  $name="";
  $email="";
  $errorsArray = array();
  form_display($name, $number, $errorsArray); 
}

在理想的世界中:

  • 关于通知是否重要?
  • 我应该通过执行$errorsArray("","");
  • 来初始化数组
  • 我在引用数组时是否应该检查数组是否为空(例如将echo $errorsArray[0]更改为echo (count($errorsArray[0])==0 ? "" : $errorsArray[0])

希望有一个相当黑白的答案 - 我不想引起长时间的讨论!

2 个答案:

答案 0 :(得分:2)

正如FakeRainBrigand指出的那样,没有绝对的答案。我个人认为通知是有原因的,并且为了避免被太多无关的错误消息所淹没,即使它使代码更长,并且看起来更冗长,也应该摆脱它们。

由于PHP的不一致性以及隐含地执行某些操作或默认情况下忽略潜在错误的所有点(例如在这种情况下),PHP可能有点容易出错。因此,明确地做一些事情可能是明智的,毫无疑问的意图。

答案 1 :(得分:0)

生产代码不应该提出通知。这导致滚动失明 - 你习惯了很多毫无意义的消息,所以你没有注意到重要的消息(直到为时已晚)。

随机评论:

  • 如何避免通知并不重要,在您的情况下,它可能会将$ errorsArray初始化为空数组;
  • 在这样的数组中保存错误可能不是最好的主意。现在,您有两种向您的视图传递数据的样式:一种是全局变量($ name,$ password),另一种是按数字索引的值($ errorsArray [0],$ errorsArray [1])。第一个更好,第二个是好的,你可以想到一些更好的($ data ['name'] ['errors'])。但一般规则是:坚持一种做事方式。正如一句古老的波兰语所说:“możebyćchujowo,byle jednakowo”(粗略翻译:可能不是最好的方式,但至少它是统一的)。