在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();
}等等等等..。
“最佳实践”怎么已经不是标签了??
发布于 2013-08-25 23:08:05
如果您正在构建一个更大的系统,您可能需要更多的输出,即使它失败了,比如模板等等。你在这里终止的方式会使你很难以一种干净的方式去完成。
如果您的应用程序是非常小的,所以在此验证之后不需要做任何事情,那么您可能很好,但同样,您应该始终构建易于扩展的代码,以防以后需要这样做。
如果由我决定,我可能会抛出一个异常,然后在更高的嵌套级别上适当地处理异常。
但是,您将再次需要根据您对此应用程序的实际意图进行调用。也许这是合适的,但很可能不是。
发布于 2013-08-26 00:10:35
实际上,在您的方法中有两个关键缺陷:
说到表单验证,你的想法会让用户体验变得困难和过时。一个好的网站总是会出现在arror上。
https://stackoverflow.com/questions/18434594
复制相似问题