PHP退出,返回&适当的编程标准

时间:2012-04-11 00:33:22

标签: php standards return 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; }
}

2 个答案:

答案 0 :(得分:1)

可以使用exit阻止进一步的代码执行。

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

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

在您的情况下,似乎没有立即需要在中途停止程序执行。您应该构建您的程序流程,以便它始终完成,但结果不同。很难遵循可能在中间某处终止的程序逻辑,因此使用return的{​​{1}}来自函数或分支的更合理的流通常是可取的。

答案 1 :(得分:1)

对于您给出的示例:

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

这通常称为提前退出提前退货(返回更常见)。这可能是非常好的,有些人说早期的返回会使代码难以理解,但我会说,如果一个函数可以很容易地被阅读和理解,那么这取决于更多。

所以决定这里是否坏的人就是你。您需要在自己绘制线的位置找到一些标准。例如,如果函数很长(超过12行代码)并包含许多这些早期返回甚至退出,这将使代码更复杂。

通常,早期返回可以使函数代码更简单,这可以大大减少错误的数量。

可能是complexity is a good criteria here

此外,我建议您非常谨慎地使用exit。它可以立即执行,您通常不需要在程序流程中使用它。特别是如果你正在编写业务逻辑。