Основы PHP
Теория: Тернарный оператор и Элвис
Посмотрите на определение функции, которая возвращает модуль переданного числа:
Можно ли записать ее лаконичнее? Что-то вроде return ОТВЕТ В ЗАВИСИМОСТИ ОТ УСЛОВИЯ? Для этого справа от return должно быть выражение. Но есть проблема: if — это инструкция, а не выражение.
В PHP существует конструкция, которая по своему действию аналогична конструкции if-else, но при этом является выражением. Она называется тернарный оператор, и именно его мы изучим в этом уроке.
Тернарный оператор — единственный в своем роде оператор, требующий три операнда:
Общий паттерн выглядит так:
Давайте перепишем начальный вариант getTypeOfSentence() аналогично. Посмотрим, как было:
А теперь — как стало:
Вы уже могли догадаться, что тернарный оператор можно вкладывать в тернарный оператор. Это возможно, но лучше так не делать. Такой код тяжело читать и отлаживать, поэтому вложенные тернарные операторы считаются очень плохой практикой.
Оператор Элвис
Представим такую задачу: на сайте у пользователей могут быть имена и псевдонимы. Если имя есть, то нужно обращаться к человеку по имени. Если имени нет — обращаемся по псевдониму. Попробуем собрать строку с приветствием человека по этим требованиям:
Мы воспользовались тем фактом, что PHP преобразовывает типы. В коде if ($name) PHP превратит $name в тип bool. Если была пустая строка, то получится false. В ином случае получится true.
С тернарным оператором можно получить более короткую запись:
Это частый случай — мы оперируем значениями bool и получаем:
- Первое значение, если
true - Второе значение в ином случае
В PHP для таких случаев есть специальный оператор:
Оператор ?: — бинарный оператор, который возвращает первый операнд если он истинен, и второй в ином случае. Еще его называют Elvis, потому что это слово
похоже на else if. А еще из-за визуального сходства с Элвисом Пресли:
.png)

