PHP 8.3: Что нового. Изменения и новый функционал.
PHP — проект с открытым исходным кодом. Узнать то, что будет включено в новую версию занимает всего минуту поиска. Например, на этой странице перечислены все принятые RFC для PHP 8.3.
Ниже вы найдёте краткий список нововведений с примерами кода.
Когда выйдет PHP 8.3?
Согласно шестимесячной фазы пре-релизов, PHP 8.3 выйдет 23 ноября 2023 года после трёх альфа-релизов, трёх бета-версий и шести релиз-кандидатов.
Дата | Релиз |
---|---|
8 Июня, 2023 | Первый альфа-релиз |
22 Июня, 2023 | Второй альфа-релиз |
6 Июля, 2023 | Третий альфа-релиз |
18 Июля, 2023 | Заморозка функций |
20 Июля, 2023 | Первый бета-релиз |
3 Августа, 2023 | Второй бета-релиз |
17 Августа, 2023 | Третий бета-релиз |
31 Августа, 2023 | Первый релиз-кандидат |
14 Сентября, 2023 | Второй релиз-кандидат |
28 Сентября, 2023 | Третий релиз-кандидат |
12 Октября, 2023 | Четвёртый релиз-кандидат |
26 Октября, 2023 | Пятый релиз-кандидат |
9 Ноября, 2023 | Шестой релиз-кандидат |
23 Ноября, 2023 | GA |
PHP 8.3 Новые функции
json_validate()
Вместо использования json_decode()
для проверки JSON-строки теперь можно использовать функцию json_validate()
. Согласно RFC она потребляет меньше ресурсов.
json_validate('{ "foo": "bar", }');
// Syntax error
echo json_last_error_msg();
Как видите, json_validate()
возвращает логическое значение, и вы можете получить сообщение об ошибке с помощью json_last_error()
или json_last_error_msg()
.
Узнать больше можно в статье PHP 8.3: Добавлена функция json_validate
gc_status
возвращает дополнительную информацию
В PHP 8.3 функция gc_status()
возвращающая информацию о GC будет возвращать четыре новых поля с дополнительной информацией. В массив с возвращаемой информацией добавлены поля: running
, protected
, full
и buffer_size
.
var_dump(gc_status());
Узнать больше можно в статье PHP 8.3: gc_status
дополнительная информацию о GC
PHP 8.3 Изменения синтаксиса/функциональности
unserialize()
обновление ошибки E_NOTICE до E_WARNING
До версии PHP 8.3 при передаче недопустимой строки функции unserialize()
в некоторых случаях, например при синтаксической ошибке в сериализованной строке выдавалось PHP уведомление (E_NOTICE
). Начиная с версии PHP 8.3 и в более поздних версиях это было изменено на выдачу предупреждений (E_WARNING
). Кроме того, некоторые условия функции serialize()
изменены, чтобы тоже выдавать E_WARNING
unserialize("invalid-string");
- PHP Notice: unserialize(): Error at offset 0 of 14 bytes
+ PHP Warning: unserialize(): Error at offset 0 of 14 bytes
В PHP 8.0 уровень сообщений об ошибках PHP по умолчанию был изменён на E_ALL
. Если значение error_reporting
не было изменено в пользовательском INI-файле, это не должно привести к возникновению каких-либо новых ошибок, кроме изменения уровня серьёзности.
Узнать больше можно в статье PHP 8.3: unserialize()
обновление ошибки E_NOTICE до E_WARNING
Дополнения Randomizer
Добавятся три новых метода в \Random\Randomizer
и Перечисление IntervalBoundary
, которое используется в одном из методов:
final class Randomizer {
public function getBytesFromString(string $string, int $length) : string {}
public function nextFloat() : float {}
public function getFloat(float $min, float $max, IntervalBoundary $boundary = IntervalBoundary::ClosedOpen) : float {}
}
enum IntervalBoundary
{
case ClosedOpen;
case ClosedClosed;
case OpenClosed;
case OpenOpen;
}
Список изменений:
- Переименован
getBytesFromAlphabet
вgetBytesFromString
, добавлено перечислениеGetFloatBounds
- Переименован
GetFloatBounds
вIntervalBoundary
. - Переименован третий параметр
getFloat()
с$bounds
в$boundary
, чтобы он соответствовал именам перечисления.
Узнать подробности можно в статье PHP 8.3: Дополнение Randomizer