我想知道PHP是否有一个函数允许我在到达"?>"标签,例如:
<?php
echo 'first';
endphptag();
echo 'second';
?>
third
<?php
echo 'fourth';
?>
那么输出应该是:
first
third
fourth
我知道有些人认为这是无用的,但我想为iframe上的验证脚本做这件事,而不是使用die
或exit
函数,因为它会杀死整个脚本,我只想结束它的一部分。
通常我使用if - else
代替,但我想避免它们,因为进程很大,我想要一些更可读的东西,顺便说一下,我在我的ajax脚本中使用if - die
,我想在我的iframes中使用这样的东西,谢谢!
嗯,我只是想知道PHP是否已经为它提供了一个合适的函数(似乎没有),所以我想我就把它留给if - else,因为使用更多的进程来使它"更可读"是不值得的(例如:try - catch使用了太多的资源,我也不打算去做)。我只会在我的ajax文件中使用die函数来使用这个过程(我不知道是否推荐,但我认为没有问题,因为PHP出于某种原因应该有它)
例外是你正在寻找的:
try {
// code
} catch (Exception $e) {
// handling
}
你把你的代码放在try块中,你用throw new Exception();
抛出一个异常,它只退出try块中的其余代码。
你的代码应该是:
<?php
try {
echo 'first';
throw new Exception();
echo 'second';
} catch (Exception $e) {}
?>
third
<?php
echo 'fourth';
?>
我要把这个扔在那里和鸭子,但如果你真的需要这样做,那么goto
实际上是一个不错的选择:
<?php
echo 'first';
goto endofblock;
echo 'second';
endofblock:
?>
或者你可以用假循环来避免goto的"邪恶"。对于编译器来说,它们基本上是一样的,但是其他程序员不会因为你使用了goto
<?php
do {
echo 'first';
break;
echo 'second';
} while (false)
?>
为什么不使用开关和大小写?
- http://php.net/manual/en/control-structures.switch.php
如果我是你,我会省略end-php标记。大多数编码标准都不建议这样做,原因太长,在这里无法解释。
但除此之外,继续使用if/else或switch/case控制结构。如果使用OOP,则将验证过程的大部分从内联代码中取出,并将它们打包到函数或类方法中。
参见关于GOTO的说明;-)http://xkcd.com/292/
PHP解释器将文件作为单个单元处理,<?php
标记只是指定要忽略的文本部分(在标记之外),就像注释一样。标签不与代码的任何部分相邻。所以在你的情况下,我认为goto
声明可能是正确的选择。或者,如果您可以将代码放入function
,则可以使用return
。