Почему WordPress переворачивает условные операторы?
В основном коде WordPress часто можно увидеть следующее:
if (1 == $someVar)
вместо такого варианта:
if ($someVar == 1)
Не знаю, является ли первый способ стилем кодирования, характерным для WordPress, но я заметил его только в коде WP (как в ядре, так и в сторонних плагинах).

Этот стиль написания кода известен как Условие Йоды (Yoda Condition), и он не является специфичным для WordPress. Я использовал тот же стиль в коде на C++, C# и даже JavaScript.
Главное преимущество Условия Йоды в том, что оно предотвращает случайное присваивание значения из-за опечатки. Рассмотрим следующую (часто встречающуюся в реальном коде) опечатку:
if ( $some_variable = 1 ) {
// ...
}
Это выражение всегда будет оцениваться как true
, но имеет дополнительный эффект присваивания значения 1
переменной $some_variable
. Хотя иногда это делается намеренно. В WordPress, в частности, вы часто можете увидеть:
if ( $post = some_function( $_POST['id'] ) ) {
// ...
} else {
// ...
}
Цель этого кода как раз в присваивании нового значения переменной $post
, и он работает, потому что функция some_function()
возвращает false
в случае ошибки.
Условия Йоды (перестановка порядка оператора сравнения ==
) защищают вас от случайного присваивания значений, когда вы этого не планировали. Если вы допустите ошибку и поставите только один =
в коде, вы получите ошибку, потому что нельзя присваивать значение обычному литералу:
if ( 1 = $some_variable ) {
// ...
}
Как я уже сказал, это не является уникальным для WordPress или даже для PHP, однако это часть обязательных стандартов кодирования WordPress. Если вы пишете плагин или тему для общего распространения или участвуете в разработке ядра, вам нужно знать, что такое Условия Йоды и как их использовать.
