项目中遇到的那些Bug(一):empty的用法

PHP/Mysql/Nginx Alice 10个月前 (05-15) 204次浏览 0个评论

  前段时间在做一个添加功能的时候,在本地测试一切正常,代码上传到服务器后,页面直接就打不开了,我当时就懵了,不知道个什么情况,没有报错,也没内容,就一张碎图配上几个字,如图:

项目中遇到的那些 Bug(一):empty 的用法

按下 F12 键,我想检查下有没有什么错误,结果 nothing,一下脑袋就转不过弯来了,想着本地都运行正常了,为啥上了服务器就这样了呢,难道服务器有什么限制,脑海中设想了无数次,没想出个所以然来,只好检查一遍代码。

代码从头到尾看来看去,一步步调试来调试去,也没发现问题,因为这只是一个展示页面,做的只是一个 sql 查询,我把查询语句打印出来,在数据库执行了一遍也没发现问题,一下子不知道怎么解决了,我就想了个傻办法,把控制器里的所有功能都注释了,重新写了个方法,输出一个值,看会不会出现错误,结果没有。

既然没有,那么继续,就想着难道是这个控制器里的其它方法有什么错误,然后影响了这个页面的展示?然后我就一个个地删方法,因为控制器里的方法并不多,所以并没有用多长时间,删掉其中一个方法后,页面正常展示了,OK,找到地方了,接下来就是回到这个方法,检查里面哪里存在错误,代码从头到尾读一遍,最先想到的便是这个地方,如图:

项目中遇到的那些 Bug(一):empty 的用法

当时写代码的时候,并没有去注意过这个问题,因为功能写完后测试了一遍并没有发现 bug,而且有时候出现这种红波浪并没有什么问题,也没有影响功能,所以当时的第一反应是只当这个红波浪线是一个提示什么的。现在好了,出问题了,那么它为什么会出现这个波浪线呢,要怎么样才能不让它不出现波浪线呢,难道是因为这里面的代码太长了,所以它就出现了波浪线?那么我把它用变量接收一下,会不会就不会出现了呢,当时的我就是这么想的,也这么干了,然后代码改成了如下:

项目中遇到的那些 Bug(一):empty 的用法

传到服务器后,OK,正常了,我一下就乐了,什么鬼,还能这样子,难道真的是因为代码长了的缘故么,我怎么就觉得这个 bug 解决的有点悬呢,虽然解决了,但是没太搞明白个什么状况(因为从心底里不接受是代码太长的缘故)。我把这个事跟网上的一个 code 友说了,然后他直接就说不想理我了:IDE 那么明显的错误你都没发现吗?

IDE 错误?他一说这个,我就把鼠标定在那段代码上一看,咦,还真有提示,如图:

项目中遇到的那些 Bug(一):empty 的用法

看得不是特别懂,感觉应该是跟 php 版本有关的,因为看到了 php5.5,然后去谷歌翻译了这段提示语,结果如下:

项目中遇到的那些 Bug(一):empty 的用法

哟,原来只在 php5.5 版本才能这样子写啊,我一看本地的环境,php5.5.38 的,不清楚线上的是什么版本,上传了个文件 phpinfo()了一下,PHP Version 5.4.26,原来是这样,遂赶紧去某度查了查 empty 的用法,好家伙,一堆搜索结果,看到最多的就是新特性三个字,点开其中一个看了看,
其中 php5.5 的新特性中就写到:empty() 支持传入表达式,而不仅是一个变量。

项目中遇到的那些 Bug(一):empty 的用法

然后就仔细查了查 empty 的用法,官网上有这么一段介绍:

项目中遇到的那些 Bug(一):empty 的用法

哇,终于明白了,empty 用了这么久,都没注意过这个问题,以前也并没有这么写过,管它什么变量不变量,只要能用就行,这次也是因为懒得再多写一行代码,便用了这种写法,结果就出现这样的问题了。当然,也并没有什么不好,怎么说也涨知识了,以前的时候在群里也看到一些猿友们说 php7 出来了啦,跟以前的版本比用起来怎么怎么的,balabala,当时也只是看看,并没有去研究过,因为特性太多我也记不住,总想着等用 php7 版本时再说吧,果然,呵呵,采坑了。。。。这坑还踩得特别地 low,用那 code 友的话说就是:我就笑笑不说话。。。捂脸。。。 :arrow:

PS:IDE 用的 Phpstorm


女程序员博客 , 版权所有丨本站采用BY-NC-SA协议进行授权 , 转载请注明项目中遇到的那些 Bug(一):empty 的用法
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址