Другие изменения
Изменения в модулях SAPI
Apache2Handler
Модуль PHP был переименован из php7_module
в
php_module
.
Измененные функции
Reflection
Результаты ReflectionClass::getConstants() и
ReflectionClass::getReflectionConstants() теперь можно
фильтровать с помощью нового параметра filter
.
Добавлены три новые константы для работы с ним:
ReflectionClassConstant::IS_PUBLIC
ReflectionClassConstant::IS_PROTECTED
ReflectionClassConstant::IS_PRIVATE
Zip
-
Методы ZipArchive::addGlob() и ZipArchive::addPattern() принимают новые значения в массиве параметров
options
:flags
comp_method
comp_flags
env_method
enc_password
-
У методов ZipArchive::addEmptyDir(), ZipArchive::addFile() и ZipArchive::addFromString() добавлен новый параметр
flags
. С помощью него можно управлять кодировкой имени (ZipArchive::FL_ENC_*
) и заменой записи (ZipArchive::FL_OVERWRITE
). -
ZipArchive::extractTo() теперь восстанавливает время модификации файла.
Другие изменения в модулях
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
(которая используется по умолчанию).