编程语言
首页 > 编程语言> > PHP @而不是isset来测试$_GET值

PHP @而不是isset来测试$_GET值

作者:互联网

给我一个很好的理由这样做

if( isset($_GET['key']) && ($_GET['key'] === '123') )
{...

而不是这个

if( @$_GET['key'] === '123' )
{...

我要求这个非常具体的代码案例,而不是一般的!

以下原因不受欢迎:

>“使用@会使应用程序减慢几纳秒,因为
无论如何都会产生错误(即使它被压制).“好吧,我更喜欢慢
代码但更具可读性.
>“使用@是坏习惯.”一般来说这可能是真的,但在这种情况下我并不相信(而且坏习惯可能会
取决于上下文,在PHP手册的功能,如fopen他们
建议在某些情况下使用@,请参阅错误/例外
http://www.php.net/manual/en/function.fopen.php)

解决方法:

性能影响实际上并不是针对此示例的最佳参数,您必须在自己的应用程序中测量性能以确定这是否是一个问题.如果未设置大量正在检查的项目,或者您在循环中放置了诸如此类的检查,则更有可能导致速度变慢.

与使用@运算符相关的主要问题是它很可能成为代码中的约定,因此虽然您的示例看似无害,但您可能会在以后发现自己或您的团队使用:

if( @IsAvailable() ) {

并且错误抑制开始隐藏您没有预期的真实错误以及您所做的错误 – 并且您根本不知道发生了什么,因为您根本没有获得异常信息.

标签:php,get,isset,error-suppression
来源: https://codeday.me/bug/20190620/1245321.html