Почему PHP заслуживает нового взгляда: три нововведения в PHP 8

dc1ea6f2 f550 429e bf9b 44f0f1c25b96 HTML

PHP на протяжении многих лет вызывал смешанные чувства у разработчиков. Однако с выходом PHP 7, а затем и PHP 8, язык эволюционировал, став мощным, безопасным и высокопроизводительным инструментом. Несмотря на то, что стереотипы о PHP все еще существуют, игнорировать его достижения было бы неправильно.

PHP 8, в частности, привнес множество нововведений, включая Just-In-Time (JIT) компиляцию, которая значительно улучшила производительность. Кроме того, в язык были добавлены интересные синтаксические улучшения, которые сделали разработку на PHP еще более удобной.

В этой статье я расскажу о трех важных нововведениях в PHP 8, которые не только облегчают жизнь разработчикам, но и могли бы быть полезными в других языках программирования, таких как JavaScript.

Именованные аргументы: гибкость и читаемость

Именованные аргументы — это нововведение в PHP 8, которое позволяет передавать значения в функцию по имени параметра, а не по порядку. Это особенно полезно, если функция имеет много параметров, но вам нужно изменить значение только одного из них.

Пример в PHP:

foo(f: false);

В JavaScript для достижения того же эффекта вам пришлось бы передать все предыдущие аргументы, даже если вы хотите изменить только последний:

foo('test', 42, true, 'bar', 5.5, false);

В JavaScript подобное поведение можно эмулировать с помощью объектов и деструктуризации, но встроенное решение в PHP выглядит намного более элегантным и удобным.

Выражение match: элегантная альтернатива switch

Новое выражение match, представленное в PHP 8, похоже на оператор switch, но с рядом преимуществ. Оно использует строгое сравнение (===) и возвращает результат напрямую, без необходимости использовать блоки break.

Пример в PHP:

$fontWeight = match ($weight) {
100 => "Super Thin",
300 => "Thin",
400 => "Normal",
600 => "Bold",
900 => "Heavy"
};

Для аналогичного решения в JavaScript нужно использовать switch, что делает код более громоздким:

let fontWeight = '';
switch (weight) {
case 100:
fontWeight = "Super Thin";
break;
case 300:
fontWeight = "Thin";
break;
case 400:
fontWeight = "Normal";
break;
case 600:
fontWeight = "Bold";
break;
case 900:
fontWeight = "Heavy";
break;
}

Конечно, в JavaScript можно использовать объект в качестве замены match, но это требует дополнительной переменной и не всегда так же удобно.

Опциональная последовательность: работа с объектами без ошибок

Опциональная последовательность (optional chaining) — это мощный инструмент, который был представлен в PHP 8 для безопасной работы с объектами. Этот синтаксис позволяет обращаться к свойствам объекта без риска вызвать ошибку, если одно из свойств отсутствует.

Пример в PHP:

$country = $session?->user?->getAddress()?->country;

В JavaScript аналогичный код выглядит значительно сложнее:

const country =
session && session.user && session.user.getAddress() && session.user.getAddress().country
? session.user.getAddress().country
: null;

Интересно, что аналогичная возможность уже обсуждается в стандарте ECMAScript и может появиться в будущем в JavaScript.

Выводы

PHP 8 привнес множество полезных нововведений, которые делают этот язык еще более привлекательным для разработчиков. Именованные аргументы, выражение match и опциональная последовательность — это лишь некоторые из нововведений, которые значительно упрощают и ускоряют разработку.

Хотя JavaScript остается основным инструментом для веб-разработки, некоторые из этих нововведений могли бы сделать его еще лучше. Если вы еще не пробовали PHP 8, сейчас самое время дать ему шанс и оценить все преимущества нового синтаксиса.

Оцените статью