我正在写一些简单的PHP来备份一个微型网站。在我的控制,我有一个快速安全/合理性检查如何停止执行当前的PHP脚本?
if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }
我想继续我的主代码后,这一点,但为了美观,我想,以避免把它的其余部分的else
内块。最好的解决办法是什么?我可以考虑设置一个相当简单的包装来处理认证和安全逻辑,但是我觉得我只是在我的培训中错过了一个非常简单的解决方案。
我正在写一些简单的PHP来备份一个微型网站。在我的控制,我有一个快速安全/合理性检查如何停止执行当前的PHP脚本?
if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }
我想继续我的主代码后,这一点,但为了美观,我想,以避免把它的其余部分的else
内块。最好的解决办法是什么?我可以考虑设置一个相当简单的包装来处理认证和安全逻辑,但是我觉得我只是在我的培训中错过了一个非常简单的解决方案。
您可以使用die/exit函数来结束脚本(有或没有)错误。
如果这是一个函数,通常可以提前返回。
你可以
return gohome();
或
throw new Exception('Request may only contain letters');
要么将停止特定脚本在该点执行。
请尝试以下操作。
preg_match('/^[a-z]$/i', $req) or die("exit message here, if you'd like");
这是没有更好的功能比Xavier的,但我只是喜欢的“这样做或死” :)语法/想法也是种让我想起那些老的任天堂游戏滑板或者死滑雪或死亡。
+1,用于将复古游戏加入到等式中。 – 2013-04-05 01:26:33
你可以很简单地写出来;
return;
该命令将程序控制权返回给调用脚本,所以;
null
。exit
或die
),除非没有调用脚本。所以在你的情况下,
if(!preg_match('/^[a-z]$/i', $req))
{
gohome();
return;
}
并且else块不是必需的,因为如果条件返回false,它将只会继续脚本。
这似乎对我的简单需求很好。我想象我会使用类似Phil Brown在下面所建议的那样,使用Exception,并将控制器包含在稍微复杂的实现中的try块中。 – 2010-11-15 00:52:45
@Steven请注意,'exit'会停止整个PHP进程。从那时起,没有其他代码可以运行。正如你的问题暗示这是MVC应用程序中控制器操作的一部分,我怀疑这是所期望的行为。 – Phil 2010-11-15 01:03:06
非常好的一点,MVC环境中的“理想”方式可能会在所有控制器,模型和视图调用中包含异常处理。 – 2010-11-21 21:26:43