是否可以包含中断或退出命令以防止执行更多代码,或者编程是否错误?
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; }
}
答案 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
。它可以立即执行,您通常不需要在程序流程中使用它。特别是如果你正在编写业务逻辑。