1

是否可以包含一个 break 或 exit 命令来防止进一步的代码执行,或者这是一个糟糕的编程?

function index()
{
  $error = NULL;

  if ($_POST){

     // validate form
    if ($form_validated) {
        echo 'this content only';
        exit;    // or return         IS THIS BAD???
    } else {
        $error = 'form failed';
    }
 }  
  echo 'normal page on initial load';
  if ($error) { echo '<br />'.$error; }
}
4

2 回答 2

1

可以使用exit.

话虽如此,在这个特定的例子中这是否是最好的方法是有争议的。exit发出重定向时通常使用:

header('Location: /foo');
exit;

在您的情况下,似乎不需要立即在运行中停止程序执行。您应该构建您的程序流程,使其始终完成,但结果不同。很难遵循可能在中间某处终止的程序逻辑,因此通常最好return使用来自函数或分支的更具逻辑性的流程。if..else

于 2012-04-11T01:41:44.217 回答
1

对于您给出的示例:

function index()
{
  ...
    if ($form_validated) {
        echo 'this content only';
        exit;    // or return         IS THIS BAD???
    } else {
  ...
}

这通常称为提前退出提前返回(返回更常见)。这可能很好,有人说早期返回使代码难以理解,但我想说这取决于一个函数是否易于阅读和理解。

所以决定这里好坏的人是你。您需要自己找到一些标准来划定界限。例如,如果一个函数很长(超过 12 行代码)并且包含许多这些提前返回甚至退出,这将使代码更加复杂。

通常,提前返回可以使函数代码不那么复杂,从而大大减少错误的数量。

所以这里的复杂性可能是一个很好的标准

另外,我建议您exit非常小心地使用。它一次完成很多工作,您通常在程序流程中不需要它。特别是如果您正在编写业务逻辑。

于 2012-05-31T10:52:33.317 回答