Добавлен специальный опкод виртуальной машины для функции array_key_exists(), который улучшает производительность этой функции, если значение параметра может быть статически разрешено. В коде, использующем пространства имён, возможно потребуется использование абсолютного имени (\array_key_exists()
) либо же явный импорт функции.
Когда функция preg_match() в режиме UTF-8 (модификатор "u"
) неоднократно вызывается для одной и той же строки (возможно, на различных позициях), проверка правильности UTF-8 будет выполнена только один раз.
zend.exception_ignore_args - новая INI-директива для включения или исключения аргументов из трассировок стека, полученных в исключениях.
opcache.preload_user - новая INI-директива для установки пользователя, из-под которого должен выполняться код предварительной загрузки, иначе это будет root (не допускается по соображениям безопасности).
Множество модулей теперь используют исключительно pkg-config, чтобы определять зависимости библиотек. Как правило, это означает, что вместо --with-foo-dir=DIR используется только --with-foo. Пользовательские пути к библиотекам могут быть указаны либо путём добавления дополнительных каталогов в PKG_CONFIG_PATH
, либо путём явного указания параметров компиляции через FOO_CFLAGS
и FOO_LIBS
.
Следующие модули и SAPI были затронуты этим изменением:
fputcsv(), fgetcsv(), SplFileObject::fputcsv(), SplFileObject::fgetcsv() и SplFileObject::setCsvControl() теперь принимаем пустую строку в аргументе $escape
. Это отключит проприетарный механизм экранирования PHP.
Поведение функции str_getcsv() было соответствующим образом скорректировано (ранее пустая строка была идентична использованию значения по умолчанию).
Метод SplFileObject::getCsvControl() теперь также может возвращать пустую строку для третьего элемента массива, соответственно.
Модуль filter больше не поддерживает ---with-pcre-dir для Unix-сборок и поэтому может быть спокойно собран для общего пользования с помощью ./configure.
Поведение функции imagecropauto() в встроенной библиотеке libgd было синхронизировано с системной библиотекой libgd:
IMG_CROP_DEFAULT
в случае неудачного выполнения не заменяется на IMG_CROP_SIDES
Значение по умолчанию $mode
imagecropauto() было изменено на IMG_CROP_DEFAULT
; передача -1
теперь объявлена устаревшей.
imagescale() теперь поддерживает масштабирование с сохранением соотношения сторон до фиксированной высоты при передаче -1
в параметр $new_width
.
Модуль hash больше нельзя отключить, теперь он является неотъемлемой частью любой PHP-сборки, подобно модулю date.
Модуль intl теперь требует как минимум ICU 50.1.
Класс ResourceBundle теперь реализует Countable.
Поддержка nsldap и umich_ldap была удалена.
Все модули на основе libxml теперь требуют libxml версии 2.7.6 или новее.
Библиотека oniguruma больше не идёт в комплекте с PHP, вместо неё в системе должна быть libonig. В качестве альтернативы можно указать ---disable-mbregex, чтобы отключить компонент mbregex.
Конфигурационные опции --disable-opcache-file и --enable-opcache-file удалены в пользу использования INI-директивы opcache.file_cache
Функции password_hash() и password_needs_rehash() теперь принимают обнуляемую строку (string) и целое число (int) в аргументе $algo
.
Установка PEAR (вместе с PECL) больше не включена по умолчанию. Её можно явно включить, используя --with-pear. Эта опция объявлена устаревшей и может быть удалена в будущем.
Изменены числовые значения констант-модификаторов (IS_ABSTRACT
, IS_DEPRECATED
, IS_EXPLICIT_ABSTRACT
, IS_FINAL
, IS_IMPLICIT_ABSTRACT
, IS_PRIVATE
, IS_PROTECTED
, IS_PUBLIC
и IS_STATIC
) в классах ReflectionClass, ReflectionFunction, ReflectionMethod, ReflectionObject и ReflectionProperty.
Класс SimpleXMLElement теперь реализует Countable.
Встроенная в сборке библиотека libsqlite удалена. Для сборки модуля SQLite3 теперь требуется libsqlite3 ≥ 3.7.4. Чтобы собрать модуль PDO_SQLite обязательно требуется libsqlite3 ≥ 3.5.0.
Сериализация и десериализация SQLite3, SQLite3Stmt и SQLite3Result теперь явно запрещены. Раньше сериализация экземпляров этих классов была возможна, но десериализация делала объекты неиспользуемыми для дальнейшей работы.
Нотацию @param
теперь также можно использовать для обозначения параметров SQL-запроса.
Встроенная библиотека libzip удалена. Теперь обязательно наличие в системе библиотеки libzip >= 0.11, чтобы собрать модуль zip.