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