标签:php if-statement comparison
我很确定这之间没有区别
if ($value === true)
还有这个
if (true === $value)
对我来说,它总是令人困惑.我曾经认为这是一种“非常规的新开发者风格”.此外,我的老板告诉我永远不要做这样的事情.
但今天我正在查看Slim的源代码,由创建PHP: The Right Way的人编写,并看到了this(第341行).
if (true === $value) {
$c['settings'] = array_merge_recursive($c['settings'], $name);
}
我敢肯定像Josh Lockhart这样的人如果被认为是一种不好的做法就不会做这样的事情.这个订单怎么样?这是一种古老的传统吗?
解决方法:
这通俗地称为‘Yoda Conditions’.其使用背后的原因是因为有时人们会犯错误.在if语句的上下文中,有时会出现这样的错误:
if($value = 42)
请注意,没有双等号(==).这是一个有效的语句,不是语法错误.它可能会导致跟随它的代码造成巨大的中断,并且很难快速识别.尤达条件通过反转条件表达式来解决这个问题:
if(42 = $value)
这不是一个有效的语句,并且是语法错误,并且通常报告包含行号,因此它们很容易找到.
“Syntax error you have. Line 73 do something else you must.” — Yoda’s compiler, probably
你是否真的认为他们的好或坏取决于个人偏好和风格.在流行框架的某些情况下(例如WordPress),尤达条件实际上是官方编码标准的一部分.对他们的主要批评是,对某些人来说,他们降低了代码的可读性,却没有提供任何真正的主要好处.
正如@MonkeyZeus在对该问题的评论中指出的那样,有时候人们确实只想在if条件中使用单个等号:
if($iMustHaveAValue = functionCallThatCanFail()) {
// Rest assured, $iMustHaveAValue has a truthy value.
}
从the value of an assignment operation is the value assigned开始,在这种情况下由if条件评估的值(以及在原始情况下是非预期的)是恰好分配的值.
标签:php,if-statement,comparison 来源: https://codeday.me/bug/20190824/1703268.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。