Perché WordPress inverte le istruzioni condizionali?
Nel codice core di WordPress, spesso vedi questo:
if (1 == $someVar)
invece di questo:
if ($someVar == 1)
Non so se il primo modo sia uno stile di codifica specifico di WordPress, ma l'ho notato solo nel codice WP (sia core che di terze parti).

Questo stile di codifica è noto come Condizione Yoda, e non è specifico di WordPress. L'ho utilizzato anche in codice C++, C# e persino JavaScript.
Il vantaggio principale di una Condizione Yoda è che previene l'assegnazione accidentale di valori a causa di un errore di battitura. Considera il seguente errore (spesso visto in codice reale):
if ( $some_variable = 1 ) {
// ...
}
Questa condizione restituirà sempre true
, ma ha l'effetto collaterale di assegnare il valore 1
alla variabile $some_variable
. A volte però questo è intenzionale. In WordPress in particolare, spesso si vedrà codice come:
if ( $post = some_function( $_POST['id'] ) ) {
// ...
} else {
// ...
}
Lo scopo di questo codice è proprio assegnare un nuovo valore alla variabile $post
, e funziona perché la some_function()
utilizzata restituirà false
in caso di errore.
Le Condizioni Yoda (invertendo l'ordine dell'operatore di uguaglianza ==
) proteggono dall'assegnazione accidentale di valori quando non era nelle intenzioni. Se commetti un errore e inserisci un solo =
nel codice, otterrai un errore perché non puoi assegnare un valore a una costante:
if ( 1 = $some_variable ) {
// ...
}
Come ho detto, questo non è esclusivo di WordPress, né tantomeno di PHP, tuttavia fa parte degli standard di codifica obbligatori di WordPress. Se stai scrivendo un plugin o un tema per la distribuzione generale, o contribuendo al core, devi sapere sia cosa sono le Condizioni Yoda che come utilizzarle.
