我发现Wordpress代码总是采用这种编码方式:
if ( false === ( $value = get_transient( 'value' ) ) ) {
// this code runs when there is no valid transient set
}
我希望它类似于if ( ( $value = get_transient( 'value' ) ) === false )
。
Wordpress开发人员是否提到使用此PHP语法的任何原因?应该在某个地方引用这个,但这种语法很难谷歌。
(我觉得这不属于Wordpress网站,因为它与PHP语法更相关。)
答案 0 :(得分:6)
WordPress网站上有一个解释:
https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#yoda-conditions
这叫做尤达条件;简而言之,这是因为人们很容易将PHP中的赋值运算符与相等运算符混淆,因此给出了一行代码:
if (x = true)
几乎肯定是一个错字,但不会产生任何错误,因为它是有效的语法。
另一方面:
if (true = x) {
表示您尝试将x
的值分配给常量true
,PHP会看到并生成错误消息。
因此,这是一种避免PHP让您逃避的一些微妙语法问题的简单方法。
答案 1 :(得分:2)
在C中很常见。 人们使用它来避免意外变量归因,例如:
if ($a == 5);
// Works as intended
if ($a = 5);
// Sets $a to 5
if (5 == $a);
// Works as intended
if (5 == $a);
// Compile Error
人们称之为:尤达条件