PHP中是否需对返回布尔值的函数强制使用严格比较?
对返回布尔值的函数使用严格比较是否为良好实践?
首先明确:PHP中返回布尔类型的函数(比如isset()、自定义的isEnabled()这类),本身只会返回true或false,所以松散比较写法if (isset($var))和严格比较写法if (isset($var) === true)在逻辑上完全等价,不会出现意外类型转换问题。
从可读性和编码规范角度分析:
不推荐显式使用严格比较的理由:
- 冗余啰嗦:既然函数明确返回布尔值,
if (isset($var))已经清晰表达了“变量存在则执行”的逻辑,额外添加=== true属于画蛇添足,徒增代码长度。 - 违背通用编码习惯:PHP社区的普遍写法就是直接用
if (func())或if (!func())判断布尔返回值,官方文档、主流框架的示例代码均采用这种写法,强行添加严格比较会让代码显得突兀。
- 冗余啰嗦:既然函数明确返回布尔值,
特殊场景的例外情况:
- 若团队中有新手,或代码中存在容易混淆的非布尔返回函数,偶尔使用
=== true可起到强调返回值类型的作用,但这属于极个别场景,不能作为通用规范。 - 注意:如果函数可能返回非布尔值(比如老旧代码中部分函数用
0/1或null替代布尔值),此时必须用严格比较避免类型转换的问题,但这种情况本质是函数设计不规范,优先应重构函数使其返回标准布尔值,而非依赖严格比较兜底。
- 若团队中有新手,或代码中存在容易混淆的非布尔返回函数,偶尔使用
总结:对明确返回布尔值的函数,直接使用if (func())或if (!func())是更简洁、符合社区习惯的写法,显式添加=== true/=== false不属于提升可读性的良好实践,反而会让代码冗余。
内容的提问来源于stack exchange,提问作者apedic
相关产品推荐
相关产品推荐

