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


PHP exit, return & proper programming standards

是否可以

包含中断或退出命令以防止进一步的代码执行,或者这是糟糕的编程?

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; }
}

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

话虽如此,在这个特定的例子中,这是否是最好的方法值得商榷。发出重定向时通常使用 exit

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

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

对于您给出的示例:

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

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

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

通常,早期返回可以使函数代码变得不那么复杂,这可以大大减少错误的数量。

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

此外,我建议您非常小心地使用exit。它一次做很多事情,你通常不应该在你的程序流中需要它。特别是如果你正在编写业务逻辑。