在PHP中验证数据时,过度使用die();
函数是不是很糟糕的编程习惯?
我正在构建一个我已经使用该函数十几次的类,因此如果验证测试失败,整个脚本就会死掉。这是一种好的做法,我应该采取更好的方式吗?这种做法在不同语言之间是否有所不同,是否有任何编程范围的惯例或最佳实践可供学习?
以下是一个例子:
if($error = $this->checkDate($start)){
echo "START: ".$error."\r\n";
die();
}
if($error = $this->checkDate($end)){
echo "END: ".$error."\r\n";
die();
}
if($start>$end){
$error = "The start date must come <i>after</i> the end date!";
echo $error;
die();
}
if(($end-$start)<(3*24*3600) || ($end-$start)>(3*30*24*3600)){
$error = "The period must be at <i>least</i> 3 days long, and at <i>most</i> 3 months long. This date spans about ".round(($end-$start)/(3600*24*30))." months.";
echo $error;
die();
}
等等等......
PS - “最佳实践”如何不是标签?
答案 0 :(得分:2)
如果你正在构建一个更大的系统,你可能想要更多的输出,即使它失败了,比如模板等。你在这里终止的方式会让你很难以干净的方式完成。
如果您的应用程序非常小,那么在验证之后您不需要做任何事情,那么您可能很好,但是您应该再次构建易于扩展的代码,以备日后需要时使用
如果由我决定,我可能会抛出异常,然后在更高的嵌套级别处理异常处理。
但是你需要根据你对这个应用程序的实际意图来自己打电话。也许这是合适的,但可能不合适。
答案 1 :(得分:1)
您的方法实际上存在两个严重缺陷:
说到表单验证 - 您对它的想法使用户体验变得困难和过时。一个好的网站将始终显示在恐怖