在一些框架或者高手写的代码中,我们会发现很多人在做条件判断的时候喜欢把常量写在前面,比如:if(1==$a){echo111;}有什么好处正在做?让我们假设,如果一个人粗心而错过了一个=符号,将会发生什么。$a='a';if($a='b'){echo111;}echo$a;是的,输出111,$a的值变成了b。没有等号,就变成了赋值操作。这样的操作会先给$a赋值,然后根据$a的值进行判断。如果$a='',不会输出111,但是$a的值还是会变成''。划重点:PHP这种写法是不会报错的,这也是一种可能导致BUG的情况。反过来呢?$a='a';if('b'=$a){echo111;}首先大部分IDE都会报语法错误,也就是直接画红线。常量是不能被赋值修改的,无论是数字、字符串还是系统定义的常量或者我们自己定义的常量。其次,这种情况下如果还是找不到问题也没关系,运行的时候会报错,代码无法继续往下运行。当然,这只是一个小技巧,主要目的还是为了应对粗心大意带来的问题。因此,它不是强制性规范。有些公司可能会在代码审计或规范文档中强调这种写法。当然,我们最好防止这种粗心大意造成的错误。测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E4%B8%AD%E4%BD%BF%E7%94%A8if%E7%9A%84%E6%97%B6%E5%80%99%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BB%BA%E8%AE%AE%E5%B0%86%E5%B8%B8%E9%87%8F%E6%94%BE%E5%9C%A8%E5%89%8D%E9%9D%A2%EF%BC%9F.php===========各媒体平台均可搜索【硬核项目经理】
