Інші зміни

Ядро PHP

Функція set(raw)cookie приймає аргумент $option

Функції setcookie() і setrawcookie() тепер також підтримують таке оголошення (сигнатуру):

setcookie(string $name, string $value = "", array $options = []): bool

где$options - асоціативний масив, який може мати будь-який із ключів "expires" "path" "domain" "secure" "httponly"и"samesite"

Нові ini-директиви syslog

Наступні ini-директиви додані для налаштування логування, якщо для опції error_logустановлено значениеsyslog :

syslog.facility

Вказує тип програми, яка реєструє повідомлення.

syslog.filter

Задає тип фільтра для фільтрації повідомлень з типами фільтрів, що підтримуються - all no-ctrlиascii. Починаючи з PHP 7.3.8, також доступний тип raw, що відновлює поведінку системного журналу у попередніх версіях PHP. Цей фільтр також вплине на дзвінки syslog()

syslog.ident

Задає рядок ident, який додається перед кожним повідомленням.

Складальник сміття

Улучшензбір циклічних посиланьщо може призвести до значних покращень продуктивності.

Різне

Функцияvar_export() тепер експортує об'єкти stdClass як масив, приведений до об'єкта ((object) array( ... )), вместо использования несуществующего методаstdClass::__setState()

Функцияdebug_zval_dump() змінена для відображення рекурсивних масивів та об'єктів так само, як і var_dump(). Тепер вона не відображає їх двічі.

Функції array_push() і array_unshift() тепер також можуть бути викликані одним аргументом, що особливо зручно в поєднанні з оператором поширення.

Інтерактивний відладчик PHP

Видалені константи, що не використовуються. PHPDBG_FILE PHPDBG_METHOD PHPDBG_LINENO і PHPDBG_FUNC

Менеджер процесів FastCGI

Тепер також доступна функція getallheaders()

Бібліотека Client URL (cURL)

Тепер потрібна бібліотека libcurl версії ≥ 7.15.5.

Фільтрування даних

FILTER_VALIDATE_FLOAT тепер також підтримує параметр thousand, який визначає набір дозволених символів-розділювачів тисяч. Значення за замовчуванням ("',.") повністю зворотно сумісне з попередніми версіями PHP.

FILTER_SANITIZE_ADD_SLASHES був доданий як псевдонім фільтра magic_quotes FILTER_SANITIZE_MAGIC_QUOTES). Фильтрmagic_quotes підлягає видаленню у майбутніх версіях PHP.

FTP

Стандартний режим змінено на binary

Функції інтернаціоналізації

Константа**Normalizer::NONE** оголошена застарілою, коли PHP скомпільовано з ICU версії ≥ 56.

Введена константа**Normalizer::FORM_KC_CF**в качестве аргументаNormalizer::normalize()для нормализацииNFKC_Casefold; доступна, коли є ICU ≥56.

Об'єктна нотація JavaScript (JSON)

Доданий новий прапор JSON_THROW_ON_ERROR, який можна використовувати з json_decode() або json_encode() і змушує ці функції викидати новий виняток JsonException у разі виникнення помилки замість того, щоб встановлювати глобальний стан помилки, який вилучається за допомогою json_last_error() і json_last_error_msg(). . JSON_PARTIAL_OUTPUT_ON_ERRORимеет приоритет надJSON_THROW_ON_ERROR

Мультибайтові рядки

Конфігураційна опція --with-libmbfl більше недоступне.

ODBC (Unified)

ПоддержкаODBCRouterиBirdstep, включая ini-директивуbirdstep.max_links було видалено.

OPcache

Видалено ini-директиву opcache.inherited_hack. Це значення вже ігнорувалося з PHP 5.3.0.

OpenSSL

Додані опції потоку ssl min_proto_versionиmax_proto_version, а також відповідні константи для можливих значень протоколу TLS.

Регулярні вирази (сумісні з Perl)

Модуль PCRE було оновлено до PCRE2, що може призвести до незначних змін у поведінці (наприклад, діапазони символів у класах тепер інтерпретуються суворіше) і доповнює існуючий синтаксис регулярних виразів.

Функцияpreg_quote() тепер також екранує символ '#'

Microsoft SQL Server та функції Sybase (PDO_DBLIB)

Добавлен атрибут**PDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS** для автоматичного пропуску порожніх наборів рядків.

Добавлен атрибут**PDO::DBLIB_ATTR_TDS_VERSION** що представляє версію TDS.

Стовпці DATETIME2 тепер обробляються як стовпці DATETIME.

Функції SQLite (PDO_SQLITE)

Бази даних SQLite3 тепер можна відкрити в режимі лише для читання, встановивши новий атрибут PDO::SQLITE_ATTR_OPEN_FLAGSна значениеPDO::SQLITE_OPEN_READONLY

Обробка сесій

Функцияsession_set_cookie_params() тепер також підтримує таке оголошення (сигнатуру):

session_set_cookie_params(array $options): bool

где$options - асоціативний масив, який може мати будь-який із ключів "lifetime" "path" "domain" "secure" "httponly"и"samesite"Соответственно, возвращаемое значениеsession_get_cookie_params() тепер також має елемент із ключем "samesite". Крім того, нова ini-опція session.cookie_samesite для встановлення за промовчанням директиви SameSite для cookies. За замовчуванням використовується значення "" (порожній рядок), тому директива SameSite не вказана. Може бути встановлена ​​на значення "Lax"или"Strict", яке встановлює відповідне значення директиви SameSite.

Tidy

Сборка вместе» tidyp Тепер також підтримується прозоро. Оскільки tidyp не пропонує API для отримання дати релізу, tidy_get_release() і tidy::getRelease() повертає значення 'unknown' в цьому випадку.

XML-парсер

Значення callback-функції, що повертається xml_set_external_entity_ref_handler() більше не ігнорується, якщо модуль був зібраний із бібліотекою libxml. Раніше значення, що поверталося, ігнорувалося, а парсинг ніколи не припинявся.

Zip

Складання з використанням libzip, що входить до PHP, не рекомендується, але все ж таки можлива шляхом додавання --without-libzip у конфігурацію.

Стиснення Zlib

Добавлен параметр контекста zlib/level дляобгортки compress.zlib, щоб полегшити встановлення бажаного рівня стиснення.