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, сейчас самое время дать ему шанс и оценить все преимущества нового синтаксиса.