Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:做所有这些检查都是浪费吗?_Php - Fatal编程技术网

PHP:做所有这些检查都是浪费吗?

PHP:做所有这些检查都是浪费吗?,php,Php,我将写一个IF条件,如下所示: if (isset($_GET['code']) && !empty($_GET['code']) && ctype_digit($_GET['code'])){ //other code here } 我的意思是,如果我只检查: if(ctype_digit($_GET['code'])){ } 当然$\u GET['code']是存在的,它不是空的,用第一种方法编写这个条件不是很浪费吗?使用isset()和ctype\

我将写一个IF条件,如下所示:

if (isset($_GET['code']) && !empty($_GET['code']) && ctype_digit($_GET['code'])){
   //other code here
}
我的意思是,如果我只检查:

if(ctype_digit($_GET['code'])){ }

当然$\u GET['code']是存在的,它不是空的,用第一种方法编写这个条件不是很浪费吗?

使用
isset()
ctype\u digit()
应该可以。在调用函数之前,有必要检查
$\u GET['code']
是否设置了
ctype\u digit()
如果未设置
$\u GET['code']
,您将收到类似于以下内容的消息:

注意:未定义索引:第2行C:\xampp\htdocs\index.php中的代码


这取决于您的错误处理。如果省略第一个检查,并且键为“code”的元素将不存在于
$\u GET
数组中,则将引发
E\u通知。例如,如果您的服务器在这种情况下响应500个错误,用户将看到一个令人讨厌的500页。

如果您的错误报告被禁用,您可以忽略第一次和第二次检查。

我想说,验证您的输入并不浪费时间,但如果您将所有这些内容重复写入一次就可以了。我将创建一个名为isDigit()和required()的方法或函数,并使用它们检查您的输入。作为代码审查说明,如果您知道什么是必需的,那么您应该已经在代码的最开始就验证了$\u GET中的必填字段。(实际上,我甚至不会直接调用$\u GET,我会让它在一个从外部验证和清理数据的对象中进行处理。)

最后一个将在未同时使用
isset
设置时产生通知!空的
有点过分,但在尝试访问它之前,您应该使用其中一个来确保
$\u GET['code']
存在。您一次做的事情太多了。您要检查变量是否存在,然后验证它。在现实场景中,您需要一个验证层来执行验证任务,而检查变量是否存在仍然是相同的。您还应该提到,如果他关闭了错误报告,他会收到此通知。我从未遇到过关闭错误报告的人。也许你的意思是显示错误,但是你仍然可以在日志文件中看到错误。你也可以使用error\u reporting=E\u ALL&~E\u NOTICE来禁用日志通知,因此你可以忽略这两个检查。@arubacao我见过很多人像
index.php
顶部的
error\u reporting(0)
或以类似方式关闭。看看很多流行的CMS,如果你不得不隐藏它生成的通知,那么它就是坏代码。