问题描述

在 WordPress 的核心代码中,您经常会看到:

if (1 == $someVar)

与此相反:

if ($someVar == 1)

我不知道第一种方式是否是 WordPress-centric 编码风格,但是我只注意到 WP 代码 (核心或 3rd-party 代码) 。

最佳解决方案

这种编码风格被称为 Yoda 条件,它不是 WordPress 的具体内容。我在 C++,C#甚至 JavaScript 代码中使用了相同的风格。

Yoda 条件的主要优点是它可以防止错字发生意外的价值分配。考虑以下 (often-seen-in-the-wild) 错字:

if ( $some_variable = 1 ) {
    // ...
}

这将始终对 true 进行评估,但具有将 1 值分配给 $some_variable 的其他后果。有时这是有意的。在 WordPress 中,您会经常看到以下内容:

if ( $post = some_function( $_POST['id'] ) ) {
    // ...
} else {
    // ...
}

此代码的要点是为 $post 变量分配一个新值,它的作用是因为正在使用的 some_function()错误返回 false

Yoda 条件 (反转==相等运算符的顺序) 可以保护您不要意外分配值。如果你错了,只有一个=在代码中,你会得到一个错误,因为你不能分配一个常规的值:

if ( 1 = $some_variable ) {
    // ...
}

就像我说的,这不是 WordPress 的唯一,甚至是 PHP,但它是 required WordPress coding standards 的一部分。如果您正在编写一个插件或主题以进行普遍分发,或者为核心贡献,那么您需要知道 Yoda 条件是什么以及如何使用它们

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。