問題描述

在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。