2012-05-08 38 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。

如果您知道所检查的类型,则只能使用===

相关问题