2012-05-08 37 views
2

我是PHP的新手,我只是遇到了一天浪費的錯誤,因爲我沒有意識到PHP ==操作符鍵入的強制類似於Javascript。在PHP中總是使用===安全嗎?

我知道道格拉斯克羅克福德建議永遠不要在Javascript中使用==操作符,並且要始終使用===操作符。

如果我以一種永不假定類型強制的方式進行編碼,我可以在PHP中使用相同的建議,並且從不使用==運算符嗎?是否安全總是使用===運算符,還是有我需要注意的陷阱?

+1

我已經寫了幾個CMS和PHP框架來完成PHP可以做的每種操作和數據轉換。由於他們解決了不同的問題,我仍然使用'=='和'==='。然而,在現實世界中'==='真的應該被用得比現在更多。 – Xeoncross

+0

我不記得我最後一次使用鬆散的比較版本。 – goat

回答

7

默認情況下,您應該使用===(以避免剛剛遇到的問題),並在需要時使用==,以方便起見。

舉例來說,你可能是從$_GET或類似服用參數,參數可能是字符串truefalse,VS布爾truefalse。就我個人而言,我會檢查所有內容,但如果您意識到這一點,並且謹慎使用==,則可能存在合法使用案例。

4

=====,由於特定原因而存在。正如您在文章中已經提到的那樣,==確實會輸入強制。

我來自強類型編程背景,因此從不需要類型強制,就像你。在這種情況下,始終使用===是安全的。

當然,當您確實需要強制時,請使用==

如果輸入無法控制(GET/POST參數,API響應),則可以使用==或使用強制轉換。

0

var_dump('1' == 1);返回bool(true)var_dump('1' === 1);返回bool(false),因爲它們具有相同的值但類型不同。一個是字符串,另一個是int。

如果您知道所檢查的類型,則只能使用===

相關問題