PHP中使用if的時候為什麼建議將常量放在前面?
- 2020 年 2 月 17 日
- 筆記
PHP中使用if的時候為什麼建議將常量放在前面?
在某些框架或者高手寫的程式碼中,我們會發現有不少人喜歡在進行條件判斷的時候將常量寫在前面,比如:
if(1 == $a){ echo 111; }
這樣做有什麼好處呢?我們假設一個不小心的粗心大意,少寫了一個=號,會有什麼結果。
$a = 'a'; if($a = 'b'){ echo 111; } echo $a;
沒錯,111輸出了,$a的值也變成了b。少了一個等號,就變成了賦值操作,這樣的操作會先給$a賦值,然後根據$a的值進行判斷。如果$a = '',就不會輸出111,但是$a的值還是會變成''。
劃重點:這樣的寫法php是不會報錯的,這也是有可能造成BUG的情況。
那麼反過來呢?
$a = 'a'; if('b' = $a){ echo 111; }
首先,大部分的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