На данный момент в серии мы рассмотрели много вопросов. До сих пор мы обсуждали следующие темы:
- Соглашения об именах и аргументы функций
- Использование одинарных и двойных кавычек
- Отступы, использование пробелов и пробелы
- Стиль скобок, регулярные выражения и теги PHP
Много вещей, верно?
В этой конкретной статье я подумала, что нам будет легче, прежде чем перейти к последней теме. Таким образом, мы рассмотрим две действительно простые темы (которые часто либо игнорируются, либо слишком усложняются).
В частности, мы поговорим о троичном операторе и поговорим об условиях Йоды.
Слово об условиях WordPress
Когда речь заходит о написании кода на основе WordPress, Стандарты кодирования строго говорят, что мы должны в первую очередь стремиться к читабельности. Прямо из Кодекса:
В целом, удобочитаемость важнее, чем ум или краткость.
Но в этом есть небольшой нюанс. Некоторые разработчики считают, что троичный оператор немного расходится с этим конкретным принципом именно потому, что это еще один способ написания оператора if/else
, и если разработчик не знаком с написанием или чтением троичного оператора, он нарушение этого принципа.
Мы рассмотрим это более подробно в данный момент.
Тернарный оператор
Во-первых, для тех, кто не знаком, троичный оператор — это упрощенный способ написания условного оператора if/else
. Обычно он используется только в тех случаях, когда условное выражение имеет простейшую форму, и только в том случае, if
имеется один блок if
и единственный блок else
.
Например, предположим, что у нас есть такое условие:
1
2
3
4
5
6
7
8
9
|
$uses_gasoline = null;
if ( ‘hybrid’ == $car_type ) {
$uses_gasoline = false;
} else {
$uses_gasoline = true;
}
echo $uses_gasoline;
|
Конечно, это немного надуманный пример, но вы поняли. В конце концов, я просто пытаюсь продемонстрировать, как преобразовать подобное условие в форму, используемую троичным оператором.
В соответствии с примером выше, вы можете сделать следующее:
1
2
|
$uses_gasoline = ‘hybrid’ == $car_type ?
echo $uses_gasoline;
|
Есть смысл? Важно отметить: троичный оператор проверяет истинность (а не ложь, очевидно).
Что бы это ни стоило, я считаю, что это очень похоже на чтение предложения. В первом пункте задается вопрос (очевидно, пунктирный знак вопроса), причем два возможных ответа возвращаются на основе оценки условного выражения.
Существует одно предостережение для проверки на истинность, все это задокументировано в Кодексе:
Исключением будет использование
! empty()
! empty()
, так как тестирование на ложность здесь, как правило, более интуитивно понятно.
По моему опыту, это был единственный раз, чтобы использовать отрицательную оценку в условных. Все время, проведенное с троичным оператором, я обнаружил, что проверка на ложность часто затрудняет расшифровку троичной оценки.
Кроме того, я обнаружил, что лучше всего предоставить одну оценку и, возможно, две оценки при очень простых и ясных обстоятельствах.
Кроме этого, вы можете использовать троичный оператор в своей повседневной работе на WordPress.
Йода Условия
Если вы внимательно следите, вы заметите, что я сделал то, что большинство языков программирования (или даже платформы на основе PHP вне WordPress) не делают регулярно:
Условное сравнение было сделано путем сравнения значения с переменной; не наоборот.
Традиционно мы увидим что-то вроде этого:
1
2
3
4
5
6
7
8
9
|
$uses_gasoline = null;
if ( $car_type == ‘hybrid’ ) {
$uses_gasoline = false;
} else {
$uses_gasoline = true;
}
echo $uses_gasoline;
|
И соответствующий троичный оператор будет выглядеть примерно так:
1
2
|
$uses_gasoline = $car_type == ‘hybrid’ ?
echo $uses_gasoline;
|
Так что, если большинство языков программирования и платформ не используют условия Yoda, то почему WordPress?
Согласно Кодексу:
В приведенном выше примере, если вы пропустите знак равенства (признайте, что это случается даже с самым опытным из нас), вы получите ошибку разбора, потому что вы не можете присвоить константу, такую как
true
. Если бы оператор был наоборот( $the_force = true )
, присваивание было бы совершенно правильным, возвращая1
, в результате чего оператор if оценивался бы какtrue
, и вы могли бы некоторое время преследовать эту ошибку.
На мой взгляд, это действительно очень хорошее объяснение для проведения подобных сравнений, особенно в динамически типизированных языках, таких как PHP и JavaScript.
Независимо от того, согласны ли вы с этим подходом или нет, он является частью стандарта, и вы увидите, что он будет использоваться в ядре WordPress, темах, плагинах, статьях и многом другом.
Для этого я настоятельно рекомендую начать внедрять в свою работу.
Вывод
Как я уже упоминал в начале, этот конкретный пост будет гораздо проще и понятнее, чем некоторые другие материалы, которые мы рассмотрели в этой серии.
На данный момент у нас есть только еще одна важная тема: запросы к базе данных.
После этого мы сделаем обзор всех тем, которые мы наметили в этой серии, чтобы обобщить принципы, которые мы подробно изложили в стандартах кодирования.
Но сначала перейдем к запросам к базе данных.