这是“太多嵌套块”吗?

时间:2016-04-14 08:19:09

标签: php netbeans

Netbeans一直给我发出“太多嵌套块”的烦人通知,并建议我引入一个新功能,但以下是非常糟糕的做法?

$sql = 'SELECT * FROM table';
$sth = $dbh->prepare($sql);
if ($sth->execute())
  {
  if ($sth->rowCount())
    {
    while ($row = $sth->fetch())
      {
      // Read the database here
      }
    }
  else
    {
    // Handle no result case here
    }
  }
else
  {
  // Catch query failure here - Is this bit necessary if I'm confident the query is OK?
  }

因此,每当我编写SQL查询时,似乎我已经在Netbeans推荐的嵌套块限制 - 我可以安全地使这个更加流畅吗?我知道这只是一个编码“提示”,但我想检查一下,我没有做任何非常愚蠢的事情:)

1 个答案:

答案 0 :(得分:3)

嗯,这不是太糟糕,但是,根据您的偏好,您可以先处理错误'案例,避免嵌套if语句,如下所示:

$sql = 'SELECT * FROM table';
$sth = $dbh->prepare($sql);

if (!$sth->execute) {
  throw new Exception("Things went bad with the query!");
}

if (!$sth->rowCount()) {
  // either throw an exception if you always expect to have results
  // or handle the case in whatever way you need
}

while ($row = $sth->fetch()) {
  do_something_nice($row);
}

如果有许多事情可能出错,或者有很多方法可以处理某个特定情况,那么这将是一种更好的方式,而不是让if() { if() { if() { if() { ... }}}}混乱。