web-dev-qa-db-ja.com

WordPressはなぜ条件文を逆にするのですか?

WordPressのコアコードでは、これがよく見られます。

if (1 == $someVar)

これとは対照的に:

if ($someVar == 1)

最初の方法がWordPress中心のコーディングかどうかはわかりませんが、WPコード(コアまたはサードパーティコード)でしか気づいていません。

6
akTed

このコーディングスタイルはヨーダコンディションとして知られており、WordPressに特有のものではありません。私はC++、C#、そしてJavaScriptコードでも同じスタイルを使っています。

ヨーダ条件の主な利点は、タイプミスによる偶発的な値の割り当てを防ぐことです。次の(よく見られる)タイプミスを考えてください。

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

これは常にtrueに評価されますが、値1$some_variableに代入するという追加の結果になります。時にはこれは意図的なものです。 WordPressでは、具体的には、

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

このコードのポイントは、新しい値を$post変数に代入することであり、使用されているsome_function()がエラーでfalseを返すので機能します。

Yoda Conditions(==等価演算子の順序を逆にする)は、意図しないときに誤って値を代入するのを防ぎます。間違えて、コードに=を1つだけ入れると、に代入できないのでエラーになります。

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

私が言ったように、これはWordPressだけでなく、PHPにさえも固有ではありません、しかしそれは の一部ですWordPressのコーディング標準 が必要です。一般向けのプラグインやテーマを書いている、あるいはコアに貢献しているのであれば、ヨーダ条件とは何か、そしてそれらの使い方を知っておく必要があります。

11
EAMann