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

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

Apache2Handler

Модуль PHP был переименован из php7_module в php_module.

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

Reflection

Результаты ReflectionClass::getConstants() и ReflectionClass::getReflectionConstants() теперь можно фильтровать с помощью нового параметра filter. Добавлены три новые константы для работы с ним:

  • ReflectionClassConstant::IS_PUBLIC
  • ReflectionClassConstant::IS_PROTECTED
  • ReflectionClassConstant::IS_PRIVATE

Zip

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

CURL

  • Для работы модуля CURL теперь требуется как минимум libcurl 7.29.0.

  • Устаревший параметр version функции curl_version() был удален.

Дата и время

DatePeriod теперь реализует IteratorAggregate (вместо Traversable).

DOM

DOMNamedNodeMap и DOMNodeList теперь реализуют IteratorAggregate (вместо Traversable).

Intl

IntlBreakIterator и ResourceBundle теперь реализуют IteratorAggregate (вместо Traversable).

Enchant

Модуль enchant теперь использует libenchant-2 по умолчанию, если возможно. libenchant версии 1 все еще поддерживается, но устарел и может быть удален в будущем.

GD

  • Параметр num_points для imagepolygon(), imageopenpolygon() и imagefilledpolygon() теперь является необязательным, то есть эти функции могут быть вызваны с помощью трех или четырех параметров. Если параметр опущен, он рассчитывается как count($points)/2.

  • Добавлена функция imagegetinterpolation() для получения текущего метода интерполяции.

JSON

Модуль JSON больше нельзя отключить, теперь он является неотъемлемой частью любой сборки PHP, как и модуль date.

MBString

Таблицы данных Unicode обновлены до версии 13.0.0.

PDO

PDOStatement теперь реализует IteratorAggregate (вместо Traversable).

LibXML

Минимальная необходимая версия libxml - 2.9.0. Это означает, что загрузка внешних объектов по умолчанию теперь отключена и поэтому не требуется дополнительных шагов для защиты от XXE-атак.

MySQLi / PDO MySQL

  • Если mysqlnd не используется (это вариант по умолчанию и рекомендуется), минимальная поддерживаемая версия libmysqlclient теперь 5.5.

  • mysqli_result теперь реализует IteratorAggregate (вместо Traversable).

PGSQL / PDO PGSQL

Для модулей PGSQL и PDO PGSQL теперь требуется как минимум libpq 9.1.

Readline

Вызов readline_completion_function() перед запуском интерактивной подсказки (например, в auto_prepend_file) теперь отменяет функцию завершения интерактивной подсказки по умолчанию. Ранее readline_completion_function() работала только при вызове после запуска интерактивной подсказки.

SimpleXML

SimpleXMLElement теперь реализует RecursiveIterator и включает в себя функционал SimpleXMLIterator. SimpleXMLIterator является пустым расширением SimpleXMLElement.

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

  • com.dotnet_version - это новая INI-директива для выбора версии платформы .NET, которая будет использоваться для объектов dotnet.

  • zend.exception_string_param_max_len - это новая INI-директива для установки максимальной длины строки в аргументе строковой трассировки стека.

EBCDIC

Цели EBCDIC больше не поддерживаются, хотя маловероятно, что они до сих пор работали.

Производительность

  • Компилятор Just-In-Time (JIT) был добавлен в модуль opcache.

  • array_slice() в массиве без расстояний между элементами больше не будет сканировать весь массив, чтобы найти начальное смещение. Это может значительно сократить время выполнения функции с большими смещениями и малой длиной.

  • strtolower() теперь использует реализацию SIMD в локали "C" LC_CTYPE (которая используется по умолчанию).