PHP 8.4.1 Released!

Другие изменения

Изменения в ядре

Тип iterable теперь — встроенный во время компиляции псевдоним для типа array|Traversable. Поэтому сообщения об ошибках, которые связаны с типом iterable, теперь будут использовать сигнатуру array|Traversable. Тип Reflection сохраняется для одиночного iterable?iterable) для создания ReflectionNamedType с именем iterable, однако использование iterable в объединениях типов будет преобразовано в array|Traversable.

Формат даты отправляемых файлов cookie теперь 'D, d M Y H:i:s \G\M\T'; ранее он был 'D, d-M-Y H:i:s T'.

Изменения в модулях SAPI

CLI

Потоки STDOUT, STDERR и STDIN больше не закрываются при уничтожении ресурсов, что чаще всего происходит при завершении работы CLI. Однако по-прежнему можно явно закрыть эти потоки с помощью функции fclose() и подобных функций.

Изменённые функции

Ядро PHP

Функции strcmp(), strcasecmp(), strncmp(), strncasecmp() и substr_compare(), которые сравнивают строки бинарно-безопасным способом, больше не гарантируют возврат результата strlen($string1) - strlen($string2), когда длины строк не равны, но теперь вместо этого могут возвращать значения -1 или 1. Вместо зависимости от какого-либо конкретного значения, возвращаемое значение должно сравниваться со значением 0.

DBA

У функции dba_open() и dba_popen() теперь следующая принудительная сигнатура:

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

Необязательный аргумент skip функции dba_fetch() теперь находится в конце в соответствии с семантикой пользовательского пространства PHP. Теперь его сигнатура выглядит следующим образом:

dba_fetch(string|array $key, resource $handle, int $skip): string|false
Предыдущая сигнатура:
dba_fetch(string|array $key, int $skip, resource $handle): string|false
по-прежнему принимается, но рекомендуется использовать новый стандартный вариант.

Random

Функции random_bytes() и random_int() теперь выбрасывают исключение \Random\RandomException в случае возникновения ошибок CSPRNG. Ранее вместо этого выбрасывалось обычное исключение \Exception.

SPL

Параметр iterator функций iterator_to_array() и iterator_count() расширен до iterable из Iterator, позволяя передавать массивы.

Другие изменения в модулях

Date

Свойства DatePeriod теперь объявлены правильно.

Intl

Экземпляры IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone и Transliterator больше не являются сериализуемыми. Ранее их можно было сериализовать, но при десериализации получались непригодные объекты или возникали ошибки.

MySQLi

Поддержка libmysql была удалена и теперь невозможно скомпилировать mysqli с libmysql. С этого момента модуль mysqli можно компилировать только с помощью mysqlnd. Все функции libmysql, недоступные в mysqlnd, были удалены:

OCI8

Минимальная необходимая версия библиотеки Oracle Client теперь 11.2.

PCRE

Теперь поддерживаются символы NUL (\0) в строках шаблонов.

Сессия

Попытка изменить INI-директиву session.cookie_samesite, когда сессия активна или вывод уже отправлен, теперь будет неудачной и выдаст предупреждение. Это изменение унифицирует поведение по аналогии со всеми другими настройками INI-директив сессии.

SQLite3

sqlite3.defensive теперь INI_USER.

Стандартные функции

Функция getimagesize() теперь сообщает фактические размеры, биты и каналы изображений AVIF. Ранее размеры сообщались как 0x0, а биты и каналы вообще не сообщались.

Tidy

Свойства класса tidy теперь объявлены правильно. А свойства класса tidyNode теперь правильно объявлены как доступные только для чтения.

Zip

Модуль Zip был обновлён до версии 1.20.0, в которой добавлены следующие методы:

Изменения в работе с INI-файлами

К целочисленным INI-параметрам добавлена поддержка двоичных (0b/0B) и восьмеричных (0o/0O) префиксов. Целочисленные INI-параметры, начинающиеся с нуля (0), продолжают интерпретироваться как восьмеричное целое число.

При разборе некоторых неправильно отформатированных значений теперь будет выдаваться предупреждение, если раньше это молча игнорировалось. Для обратной совместимости интерпретация этих значений не изменилась. Это влияет на следующие настройки:

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top