¿Por qué WordPress invierte las declaraciones condicionales?
En el código central de WordPress, a menudo ves esto:
if (1 == $someVar)
en lugar de esto:
if ($someVar == 1)
No sé si la primera forma es un estilo de codificación centrado en WordPress, pero solo lo he notado en código de WP (ya sea del núcleo o de código de terceros).

Este estilo de codificación se conoce como Condición Yoda, y no es algo específico de WordPress. He utilizado el mismo estilo en código C++, C# e incluso JavaScript.
El principal beneficio de una Condición Yoda es que evita la asignación accidental de valores debido a un error tipográfico. Considera el siguiente error (comúnmente visto en el mundo real):
if ( $some_variable = 1 ) {
// ...
}
Esto siempre se evaluará como true
, pero tiene la consecuencia adicional de asignar el valor 1
a $some_variable
. Aunque a veces esto es intencional. En WordPress específicamente, a menudo verás cosas como:
if ( $post = some_function( $_POST['id'] ) ) {
// ...
} else {
// ...
}
El propósito de este código es asignar un nuevo valor a la variable $post
, y funciona porque la función some_function()
que se está utilizando devolverá false
en caso de error.
Las Condiciones Yoda (invirtiendo el orden del operador de igualdad ==
) te protegen de asignar valores accidentalmente cuando no era tu intención. Si cometes un error y solo pones un =
en el código, obtendrás un error porque no puedes asignar a un valor regular:
if ( 1 = $some_variable ) {
// ...
}
Como dije, esto no es exclusivo de WordPress, ni siquiera de PHP, sin embargo es parte de los estándares de codificación requeridos de WordPress. Si estás escribiendo un plugin o tema para distribución general, o contribuyendo al núcleo, necesitas saber tanto qué son las Condiciones Yoda como cómo usarlas.
