Зміни, що ламають зворотну сумісність
Ядро PHP
Програми, які були дуже близькими до переповнення стека викликів
Програми, які були дуже близькими до переповнення стека викликів, тепер можуть викидати виняток Error, коли зайнятий у байтах розмір стека більший, ніж визначено в налаштуванні zend.max_allowed_stack_size-zend.reserved_stack_size (fiber.stack_size-zend.reserved_stack_size для файберів).
Виконання функції proc_get_status() кілька разів
Виконання функції proc_get_status() кілька разів тепер завжди повертає правильне значення у POSIX-системах. Раніше лише перший виклик функції повертав правильне значення. Виконання функції proc_close() після функції proc_get_status() тепер повертає правильний код виходу. Раніше це повернуло б значення -1
. Внутрішньо це працює через кешування результатів на POSIX-системах. Якщо потрібна колишня поведінка, можна перевірити ключ «cached»
у масиві, який повертає функція proc_get_status(), щоб перевірити, чи кешували результат.
Таймери Zend Max Execution
Таймери Zend Max Execution тепер за замовчуванням включені для збирання ZTS в системах Linux.
Увімкнення трейтів зі статичними властивостями
Включення трейтів зі статичними властивостями тепер повторно визначатиме статичні властивості, успадковані з батьківського класу. Це створить різні сховища статичних якостей для поточного класу. Це аналогічно додаванню статичної якості у класі, без трейтів.
Надання негативного індексу порожньому масиву
При додаванні до масиву з зайнятим негативним індексом, який, припустимо, зберігається в змінній $n, нового значення, наступний індекс отримає значення $n + 1
, а не
Перевірка невідповідності видимості констант класів
Невідповідність видимості констант класів тепер буде коректно перевірено під час реалізації інтерфейсів.
Записи WeakMap, ключ яких відповідає самим собі
Записи об'єкту WeakMap, ключ яких зіставлений із собою, (можливо, транзитивно) тепер можна видалити під час збору циклу якщо ключ недоступний, крім шляхом перебору значень WeakMap (доступність під час перебору вважається слабкої). Раніше такі записи не видалялися б автоматично.
Модуль Date
Замість попереджень та загальних винятків у модуль DateTime були додані властиві тільки йому винятки та помилки в ієрархії класів DateError і DateException. Це покращує обробку помилок та винятків, коли потрібно перевірити їх існування.
Модуль DOM
Виклик методів DOMChildNode::after() DOMChildNode::before() і DOMChildNode::replaceWith() на вузлі, у якого немає батьківського вузла, тепер непрацездатно, а не винятком ієрархії, щоб поведінка була сумісною зі специфікацією DOM.
Виклик методів класів DOMParentNode і DOMChildNode без документа тепер працює, а не викидає винятки **DOM_HIERARCHY_REQUEST_ERR
**классаDOMException. Це відповідає поведінці специфікації DOM.
Виклик методу DOMDocument::createAttributeNS() без префікса неправильно створив простір імен за умовчанням, поміщаючи елемент всередину простору імен замість атрибута. Цю помилку тепер виправлено.
МетодDOMDocument::createAttributeNS()раньше неправильно бросал исключение**DOM_NAMESPACE_ERRNAMESPACE_ERR
**классаDOMExceptionколи префікс вже був зайнятий іншим URI. Тепер він правильно обирає інший префікс у разі конфлікту префіксів.
Нові методи та властивості були додані до ряду класів DOM. Якщо клас класу успадковується від цих класів і оголошує метод або властивість з таким же ім'ям, воно має бути сумісним. В інших випадках буде викинуто типову помилку компіляції про несумісність. Ознайомитись зі списком нових методів та властивостей можна у розділах список нової функціональності і нові функції
Клас FFI
Функції мови Сі, для яких заданий тип void, що повертається, тепер повертають значення null
замість замість об'єкта object(FFI\CData:void) { }
Модуль Opcache
Налаштування INI-директиви opcache.consistency_checks було видалено. Ця функція не працювала при трасуванні JIT, а також з кешем успадкування і була відключена в PHP 8.1.18 та PHP 8.2.5; тепер її неможливо увімкнути. І трасуючий JIT, і кеш успадкування можуть змінити пам'ять (shm), що розділяється, після збереження скрипту шляхом анулювання його контрольної суми. Були спроби виправити пропуски через покажчики, що модифікуються, але була відхилена через складність. Через це вирішили видалити цю функцію.
Модуль Phar
Тип констант классаPhar тепер оголошено.
Стандартні функції
У функцію range() було внесено низку змін:
- Тепер викидається винятокTypeError, коли об'єкти (object), ресурси (resource) чи масиви (array) передаються як граничних значень.
- Тепер під час передачі у параметр
$step
значення викидається докладніше описаний винятокValueError - Тепер викидається винятокValueError, когда в параметр
$step
передаються негативні значення збільшення діапазонів. - Якщо параметр
$step
передається число з плаваючою точкою, яке може бути інтерпретовано як ціле число, воно так і оцінюється. - Тепер викидається винятокValueErrorякщо будь-який аргумент представляє нескінченне число або нечисло (NAN).
- Тепер викликається помилка рівня**
E_WARNING
**, якщо параметр$start
или$end
приймає значення порожнього рядка. Значення продовжує наводитися до значення - Тепер викликається помилка рівня**
E_WARNING
**, якщо параметр$start
или$end
приймає нечисловий рядок розміром більше одного байта. - Тепер викликається помилка рівня**
E_WARNING
**, якщо значення, передане до параметра$start
или$end
, наводиться до цілого числа через те, що інше значення - число (наприклад,range(5, 'z');
- Тепер при спробі згенерувати діапазон символів викликається помилка рівня**
E_WARNING
**, если значение параметра$step
— це число з плаваючою точкою, крім випадків, коли обидва вхідні значення — числові рядки (наприклад,range('5', '9', 0.5);
не викличе попередження). - Тепер замість приведення одного зі значень до цілого числа функціяrange()створює список символів, якщо один із них — це числовий рядок (наприклад,
range('9', 'A');
Loading...
Прапори перевірки помилок у функції file() тепер перехоплює усі неприпустимі прапори. Константа **FILE_APPEND
**ранее молча принималась.
SNMP
Тип констант классаSNMP тепер оголошено.