PHP 8.1.0 RC 4 available for testing

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

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

CLI

Использование -a без модуля readline теперь приведёт к ошибке. Ранее использование -a без модуля readline было аналогичным вызову php без каких-либо аргументов, за исключением вывода дополнительного сообщения "Interactive mode enabled". Этот режим был не интерактивным.

PHPDBG

Удалённый функционал из phpdbg был удалён.

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

Ядро

Порядок свойств, используемых в foreach, var_dump(), serialize(), сравнении объектов и т.д. был изменён. Теперь свойства упорядочены естественным образом в соответствии с их объявлением и наследованием. Свойства, объявленные в родительском классе, будут перед дочерними.

Этот порядок соответствует внутреннему расположению свойств в структуре zend_object и повторяет порядок в default_properties_table[] и properties_info_table[]. Старый порядок не был задокументирован и был вызван деталями реализации наследования классов.

Фильтрация

Флаг FILTER_FLAG_ALLOW_OCTAL фильтра FILTER_VALIDATE_INT теперь принимает восьмеричную строку с начальным восьмеричным префиксом ("0o"/"0O").

GMP

Все функции GMP теперь принимают восьмеричную строку с начальным восьмеричным префиксом ("0o"/"0O").

PDO ODBC

PDO::getAttribute() с PDO::ATTR_SERVER_INFO и PDO::ATTR_SERVER_VERSION теперь возвращает значения вместо того, чтобы выбрасывать исключение PDOException.

Reflection

ReflectionProperty::setAccessible() и ReflectionMethod::setAccessible() больше не имеют смысла. Свойства и методы теперь всегда считаются доступными с помощью Reflection.

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

syslog() теперь безопасен для двоичных файлов.

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

GD

imagewebp() теперь может выполнять кодирование WebP без потерь, передавая IMG_WEBP_LOSSLESS в качестве quality.

Эта константа определяется только в том случае, если используемый libgd поддерживает кодировку WebP без потерь.

MySQLi

mysqli_stmt::next_result() и mysqli::fetch_all() теперь доступны при компоновке с libmysqlclient.

OpenSSL

  • Для модуля OpenSSL теперь требуется OpenSSL версии не ниже 1.0.2.

  • Теперь поддерживается OpenSSL 3.0. Имейте в виду, что многие шифры больше не включены по умолчанию (часть устаревшего провайдера) и проверка параметров (например, минимальные размеры ключей) стала более строгой.

Phar

  • По умолчанию для подписей теперь используется SHA256.

  • Добавлена поддержка подписей OpenSSL_SHA256 и OpenSSL_SHA512.

SNMP

  • Добавлена поддержка SHA256 и SHA512 для протокола безопасности.

Standard

--with-password-argon2 теперь использует pkg-config для обнаружения libargon2. Таким образом, альтернативное расположение libargon2 теперь должно быть указано с помощью PKG_CONFIG_PATH.

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

  • INI-директива log_errors_max_len удалена. Начиная с PHP 8.0.0 она не имела смысла.

  • Доллар в начале строки в кавычках теперь можно экранировать: "\${" теперь будет интерпретироваться как строка с содержимым ${.

  • Обратные косые черты в строках с двойными кавычками теперь более последовательно рассматриваются как экранирующие символы. Раньше "foo\\", за которым следовало что-то, кроме новой строки, не считалось завершённой строкой. Теперь это интерпретируется как строка с содержимым foo\. Однако, как исключение, строка "foo\", за которой следует новая строка, будет по-прежнему рассматриваться как корректная строка с содержимым foo\, а не как незавершённая строка. Это исключение необходимо для поддержки простого использования путей к файлам Windows, таких как "C:\foo\".

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top