代码之家  ›  专栏  ›  技术社区  ›  Steven

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

php
  •  1
  • Steven  · 技术社区  · 14 年前

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

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

    我想在这之后继续我的主代码,但是为了美观起见,我想避免把它的其余部分放在 else 封锁。最好的办法是什么?我可以考虑设置一个相当简单的包装器来处理身份验证和安全逻辑,但我觉得我在培训中错过了一个真正简单的解决方案。

    6 回复  |  直到 14 年前
        1
  •  10
  •   Xavier Poinas    14 年前

    你可以使用 die/exit 函数结束脚本时出现(或不出现)错误。

        2
  •  3
  •   Phil Moon    14 年前

    你可以

    return gohome();
    

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

    任何一个都将在此时停止该特定脚本的执行。

        3
  •  2
  •   James    14 年前

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

        4
  •  2
  •   jon_darkstar    14 年前

    试试下面的。

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

    它在功能上并不比Xavier好,但我只是喜欢“做这个或死”的语法/思想(do this or DIE):)也让我想起了那些老的任天堂游戏Skate or DIE and Ski or DIE。

        5
  •  1
  •   aland    14 年前

    EXIT()是一个很好的方法来终止当前脚本…

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

    我宁愿保留 exit() / die() 主流中的调用。或者像菲尔建议的那样,扔一个 Exception 并且在栈中的某个地方

        6
  •  0
  •   worldofjr lola_the_coding_girl    9 年前

    你可以很简单地写作;

    return;
    

    命令将程序控制返回到调用脚本,因此;

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

    你的情况也是如此;

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

    并且不需要else块,因为它只会在条件返回false时继续脚本。