如何暂停当前PHP脚本的执行?

时间:2010-11-15 00:29:35

标签: php

我正在编写一些简单的PHP来备份微型网站。在我的控制器中,我有一个快速的安全/健全检查

if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }

我希望在此之后继续我的主要代码,但为了美观,我想避免将其余内容放在else块中。最好的方法是什么?我可以考虑设置一个相当简单的包装来处理身份验证和安全逻辑,但我觉得我在训练中错过了一个非常简单的解决方案。

6 个答案:

答案 0 :(得分:10)

您可以使用die/exit函数以(或不显示)错误结束脚本。

答案 1 :(得分:3)

你可以

return gohome();

throw new Exception('Request may only contain letters');

要么在那时停止执行该特定脚本。

答案 2 :(得分:2)

如果这是一个函数,你通常可以提前返回。

答案 3 :(得分:2)

请尝试以下操作。

preg_match('/^[a-z]$/i', $req) or die("exit message here, if you'd like");

它在功能上并不比Xavier更好,但我只喜欢“做这个或DIE”的语法/想法:)还有点让我想起那些旧的任天堂游戏Skate Or Die和Ski Or Die。

答案 4 :(得分:1)

exit()是终止当前脚本的一种非常好的方法......

if(!preg_match('/^[a-z]$/i', $req)) { gohome(); exit() }

我更喜欢在主流中保留exit() / die()次来电。或者像Phil建议的那样,在堆栈中较低的位置抛出Exception和exit()

答案 5 :(得分:0)

你可以简单地写一下;

return;

该命令将程序控制返回给调用脚本,所以;

  • 如果包含的PHP文件中包含线性代码,控件将返回调用该文件运行的脚本。
  • 如果在函数(或对象方法)中,函数将立即返回参数(如果提供),null如果不提供。
  • 除非没有调用脚本,否则它不会完全停止脚本的运行(您需要使用exitdie)。

所以在你的情况下;

if(!preg_match('/^[a-z]$/i', $req))
{
    gohome();
    return;
}

并且不需要else块,因为如果条件返回false,它将仅继续脚本。