我正在编写一些简单的PHP来备份微型网站。在我的控制器中,我有一个快速的安全/健全检查
if(!preg_match('/^[a-z]$/i', $req)) { gohome(); }
我希望在此之后继续我的主要代码,但为了美观,我想避免将其余内容放在else
块中。最好的方法是什么?我可以考虑设置一个相当简单的包装来处理身份验证和安全逻辑,但我觉得我在训练中错过了一个非常简单的解决方案。
答案 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;
该命令将程序控制返回给调用脚本,所以;
null
如果不提供。exit
或die
)。所以在你的情况下;
if(!preg_match('/^[a-z]$/i', $req))
{
gohome();
return;
}
并且不需要else块,因为如果条件返回false,它将仅继续脚本。