Написание сокращенных выражений на PHP

Admin PHP

Разбираем как читать и понимать сокращенные конструкции (сокращения) и выражения на PHP. А также как самому написать сокращенный и лаконичный код по современным стандартам языка.

1

Предположим мы что-то сравниваем. Например, какую-то дату с текущим временем.

Такое выражение:

$date = $someDate > $currentTime;

Равно этому:

if ($someDate > $currentTime) {
    $date = true;
} else {
    $date = false;
}

Теперь мы можем использовать переменную $date для проверки проходит ли условие или нет:

if ($date) {
}

2

Примерно тот же вариант. Выражение:

$isSportcar = $car === 'sportcar';

Равно этому:

if ($car == 'sportcar') {
    $isSportcar = true;
} else {
    $isSportcar = false;
}

После можем использовать это условие:

if ($isSportcar) {
}

3

Есть условие: $a > $b, если оно верно вернем true, иначе false.

Это:

return $a > $b ? true : false

Равно этому:

if ($a > $b) {
    return true;
} else {
    return false;
}

4

$a = $b ?: false;

Если переменная $b не пустая, то переменная $a будет равна переменной $b. Иначе $a будет равна false.

Более длинная форма этого же выражения:

$a = $b ? $b : false

5

Сокращенно:

$b = $a ?? false;

Более длинная форма:

$b = isset($a) ? $a : false;

6

Для переменной $image создаем условие, в котором она равна либо первому значению либо второму:

$image = has_post_thumbnail($postId)
    ? wp_get_attachment_url(get_post_thumbnail_id($postId))
    : $path . '/img/img.jpg';

7

Стиль, перенятый из языка Python. Использует оператор И (&&).

Если выражение слева от оператора выполняется успешно (возвращает true), то мы переходим к следующему условию. И т.д.

$type === 'car' && $variable && $number = 100;

Если $type равно car и одновременно равен тому что находится внутри $variable, то переменная $number будет равна значению 100.

Эту же конструкцию можно представить иначе:

$number = ($type === 'car' && $variable) ? 100 : false;

При этом скобки можно опустить. Их можно поставить для удобства в чтении кода.

8 (тоже что и 7)

if ($var1 === 'string') {
    $var2 = $var3;
}

Сокращенно:

$var1 === 'string' && $var2 = $var3;

9 (тоже что и 7, 8)

$postMeta = get_post_meta($postId, $star, true);

if (!empty($postMeta)) {
    $names[] = $postMeta;
}

Эквивалентно:

$postMeta = get_post_meta($postId, $star, true);
!empty($postMeta) && $names[] = $postMeta;

10

Это:

$debugs && $counts = count($debugs);

Равноценно:

if ($debugs) {
    $counts = count($debugs);
}

11 (php 7.4, присваивающий оператор объединения с null)

Это:

$data['id'] = $data['id'] ?? 'string';

Можно сократить:

$data['id'] ??= 'string';

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Комментарии к статье “Написание сокращенных выражений на PHP

  • Прогер
    02.09.2022 в 22:27

    #7
    $type === ‘car’ && $variable && $number = 100;
    Если $type равно car и одновременно равен тому что находится внутри $variable, то переменная $number будет равна значению 100.

    Почему $type одновременно должен быть равен и тому и другому, если читается сначала $type === ‘car’, а
    $variable отдельно возвращает true/false в зависимости от своего значения.
    В том случае если первые И покажут верно, доходит до последнего выражения($number = 100) и исполняет его
    true&& $true && $number = 100;
    ?

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Написание сокращенных выражений на PHP"