Ж
Жизнь разработчика
@fdeveloper_life4 подп.
6просмотров
24 ноября 2025 г.
statsScore: 7
Вышел PHP 8.5 — коротко о главных фишках PHP 8.5 официально релизнулся. Версия не «космос переписали», но апдейты реально рабочие и приятные для everyday-кода. Разберём самые полезные штуки с примерами. 1. Pipe-оператор |> — читаемые цепочки Теперь можно писать цепочки вызовов слева направо, без матрёшки из вложенных функций. До: $title = ' PHP 8.5 Released '; $slug = strtolower( str_replace('.', '', str_replace(' ', '-', trim($title) ) ) ); С PHP 8.5: $title = ' PHP 8.5 Released '; $slug = $title |> trim(...) |> (fn($str) => str_replace(' ', '-', $str)) |> (fn($str) => str_replace('.', '', $str)) |> strtolower(...); // php-85-released Читается по-человечески: сверху вниз, а не «изнутри наружу». 2. Новый URI-экстеншен Появился встроенный URI extension для работы с URL по RFC 3986 и WHATWG. Раньше: $parts = parse_url('https://php.net/releases/8.5/en.php'); echo $parts['host']; // php.net Теперь: use Uri\Rfc3986\Uri; $uri = new Uri('https://php.net/releases/8.5/en.php'); echo $uri->getHost(); // php.net echo $uri->getPath(); // /releases/8.5/en.php Из коробки — нормальный объект для работы с URI. 3. clone($obj, [...]) — clone with для readonly-объектов Теперь можно менять свойства прямо в момент клонирования — удобно для readonly классов и «with-ер» паттерна. readonly class Color { public function __construct( public int $red, public int $green, public int $blue, public int $alpha = 255, ) {} public function withAlpha(int $alpha): self { return clone($this, [ 'alpha' => $alpha, ]); } } $blue = new Color(79, 91, 147); $halfTransparent = $blue->withAlpha(128); Больше не нужно городить get_object_vars() и пересоздавать объект руками. 4. #[\NoDiscard] — не забывай использовать результат Атрибут #[\NoDiscard] заставляет PHP ругнуться, если ты проигнорировал возвращаемое значение, которое важно не терять. #[\NoDiscard] function getToken(): string { return 'secret-token'; } getToken(); // Warning: The return value of function getToken() // should either be used or intentionally ignored by (void) cast Если хочешь явно проигнорировать: (void) getToken(); Полезно для API, где пропущенный результат = скрытый баг. 5. array_first() и array_last() Наконец-то нормальные функции, чтобы взять первый/последний элемент массива. $events = ['created', 'updated', 'deleted']; $first = array_first($events); // 'created' $last = array_last($events); // 'deleted' $none = array_last([]); // null Вместо ручного array_key_last() и проверки на пустой массив. 6. Пару приятных бонусов - Стек-трейсы для fatal-ошибок — теперь проще отлавливать, где всё упало. - Persistent cURL share handles — можно переиспользовать соединения между запросами, снижая накладные расходы. - Улучшения с замыканиями и first-class callable в константных выражениях (атрибуты, дефолты параметров и т.д.). Стоит ли обновляться? - Если у тебя проекты уже живут на 8.x — да, 8.5 выглядит как хороший «quality of life» апдейт: - pipe-оператор + array_first/last реально упрощают код - URI-экстеншен и clone with — приятные кирпичики для архитектуры - больше дебаг-инфы и мелких оптимизаций
6
просмотров
3613
символов
Нет
эмодзи
Нет
медиа

Другие посты @fdeveloper_life

Все посты канала →
Вышел PHP 8.5 — коротко о главных фишках PHP 8.5 официально — @fdeveloper_life | PostSniper