为什么Wordpress代码始终具有不常见的"boolean literal === some dynamic expression"顺序的比较部分?

3 php wordpress

我发现Wordpress代码总是采用这种编码方式:

if ( false === ( $value = get_transient( 'value' ) ) ) {
     // this code runs when there is no valid transient set
}
Run Code Online (Sandbox Code Playgroud)

我希望它会像if ( ( $value = get_transient( 'value' ) ) === false ).

Wordpress开发人员是否提到使用此PHP语法的任何原因?应该在某个地方引用这个,但这种语法很难谷歌.

(我觉得这不属于Wordpress网站,因为它与PHP语法更相关.)

and*_*wsi 6

WordPress网站上有一个解释:

https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#yoda-conditions

它被称为Yoda条件; 简而言之,这是因为人们很容易将PHP中的赋值运算符与相等运算符混淆,因此给出了一行代码:

if (x = true) 
Run Code Online (Sandbox Code Playgroud)

几乎可以肯定是一个错字,但不会产生任何错误,因为它是有效的语法.

另一方面:

if (true = x) {
Run Code Online (Sandbox Code Playgroud)

意味着您正在尝试将值分配给x常量true,PHP将看到并生成错误消息.

因此,这是一种避免PHP让您逃避的一些微妙语法问题的简单方法.