Я никуда не пропадал 😄 - работы много, пока очухаюсь и вижу что ребята из ру сообществ PHP @laravel_cutcode , @phpyh , @php_fart итак запостили уже это - то новость не дублирую.
А так Всех с прошедшими праздниками! Что ждем в 2026 году - PHP 8.6 получается. Помнится только 5.6 добиралась до такой минорной версии. Эх, в свое время упустили возможность зарелизить 6.6.6 😈
В 8.6 стали потихоньку апрувить pull requests:
- как постил @phpdigest об одобрении rfc пару месяцев назад, а в декабря слили PR с новой функций
clamp, которая, кстати, пыталась пробиться еще в PHP 8.2, но попала только в 8.6 реализацией второй версии. Функция
clamp проверяет, находится ли сравниваемое значение в пределах определенного диапазона. Если значение находится в диапазоне, возвращает это значение; если значение не находится в диапазоне, возвращает ближайшее значение. Пример:clamp(5, 0, 100); // 5
clamp(-5, 0, 100); // 0
clamp(3.01, 1.6, 4.2); // 3.01
Там в RFC, на самом деле, помимо целочисленных и вещественных значений, есть еще сравнение значений других типов, кому интересно:
clamp(2, min: 1, max: 3) // 2
clamp(0, min: 1, max: 3) // 1
clamp(6, min: 1, max: 3) // 3
clamp(2, 1.3, 3.4) // 2
clamp(2.5, 1, 3) // 2.5
clamp(2.5, 1.3, 3.4) // 2.5
clamp(0, 1.3, 3.4) // 1.3
clamp(M_PI, -INF, INF) // 3.141592653589793
clamp(NAN, 4, 6) // NAN
clamp("a", "c", "g") // "c"
clamp("d", "c", "g") // "d"
clamp(new \DateTimeImmutable('2025-08-01'), new \DateTimeImmutable('2025-08-15'), new \DateTimeImmutable('2025-09-15'))->format('Y-m-d') // 2025-08-15
clamp(new \DateTimeImmutable('2025-08-20'), new \DateTimeImmutable('2025-08-15'), new \DateTimeImmutable('2025-09-15'))->format('Y-m-d') // 2025-08-20
- что еще интересное слили так это вывод места ошибки в йункциях
json_decode и json_last_error_msg, т.е. если до PHP 8.6 сообщения об ошибках содержали только тип ошибки и описание, то начиная с PHP 8.6, все ошибки декодирования пытаются включить местоположение, где произошла ошибка: $json = '[{';
json_decode($json, flags: JSON_THROW_ON_ERROR);
// JsonException: Syntax error near location 1:3Там если посмотреть тесты 1 2 3 4 5 6 7 8 9 10 много что пробовали запихать)