Некомпатибилни промени воназад
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Некомпатибилни промени воназад
Референца за `migration83.incompatible.php` со подобрена типографија и навигација.
Некомпатибилни промени воназад
PHP јадро
Програмите што беа многу блиску до преполнување на стекот на повици
Програмите што беа многу блиску до преполнување на стекот на повици сега може да фрлат Грешка при користење повеќе од 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() after proc_get_status()
сега исто така ќе го врати точниот излезен код. Претходно ова би вратило
-1. Внатрешно, ова функционира со кеширање на резултатот на POSIX системите. Ако претходното однесување е потребно, можно е да се провери
"cached" клучот во низата вратена од
proc_get_status() за да се провери дали резултатот е кеширан.
Zend Max Execution Timers
Zend Max Execution Timers сега е овозможен по дифолт за ZTS билдови на Linux.
Употреби на особини со статични својства
Употребите на особини со статични својства сега ќе ги препрогласат статичните својства наследени од родителската класа. Ова ќе создаде посебно складирање на статични својства за тековната класа. Ова е аналогно на додавање на статичното својство директно во класата без особини.
Доделување негативен индекс на празна низа
Доделување негативен индекс $n на празна низа сега ќе осигури дека следниот индекс е $n+1 наместо 0.
Проверка на варијансата на видливоста на константите на класата
Проверката на варијансата на видливоста на константите на класата сега се врши правилно кога се наследува од интерфејси.
Записи на WeakMap чиј клуч се мапира на себеси
WeakMap записи чиј клуч се мапира на себеси (можеби транзитивно) сега може да се отстранат за време на собирањето на циклуси ако клучот не е достапен освен со итерација преку WeakMap (достапноста преку итерација се смета за слаба). Претходно, таквите записи никогаш не би се отстранувале автоматски.
Датум
The DateTime extension has introduced Date extension specific exceptions and errors under the DateError and DateException Проширувањето DateTime воведе специфични исклучоци и грешки за проширувањето Date под
DOM
Повикување Пример #2 Вгнездени потомци, хиерархиите, наместо предупредувања и општи исклучоци. Ова го подобрува ракувањето со грешки, за сметка на потребата да се проверуваат грешки и исклучоци., Ги заменува податоците за знаци со нови јазли. DOMChildNode::before()
Користејќи го DOMParentNode
and DOMChildNode на јазол што нема родител сега е no-op наместо исклучок на хиерархијата, што е однесувањето што го бара спецификацијата DOM. DOM_HIERARCHY_REQUEST_ERR
DOMExceptionметоди без документ сега работат наместо да фрлаат
Повикување DOMDocument::createAttribute() . Ова е во согласност со однесувањето што го бара спецификацијата DOM.
DOMDocument::createAttribute() без да се специфицира префикс, неправилно би создал стандарден простор на имиња, ставајќи го елементот во просторот на имиња наместо во атрибутот. Оваа грешка сега е поправена. DOM_NAMESPACE_ERRNAMESPACE_ERR
DOMException претходно неправилно би фрлало
кога префиксот веќе се користел за различно URI. Сега правилно избира различен префикс кога постои конфликт на имиња на префикси. Беа додадени нови методи и својства на некои DOM класи. Ако класа од кориснички простор наследува од овие класи и декларира метод или својство со истото име, декларациите мора да бидат компатибилни. Во спротивно, ќе се фрли типична грешка при компајлирање за некомпатибилни декларации. Погледнете го and списокот на нови функции нови функции
FFI
за список на новоимплементираните методи и својства. void сега враќаат null C функции што имаат тип на враќање object(FFI\CData:void) { }
DOMImplementation::getFeature()
На opcache.consistency_checks наместо да го враќа следниот објект
Phar
Типот на Phar директивата INI беше отстранета. Оваа функција беше скршена со JIT за следење, како и со кешот за наследување, и беше оневозможена без начин да се овозможи од PHP 8.1.18 и PHP 8.2.5. И JIT за следење и кешот за наследување може да го променат shm откако скриптата ќе биде перзистирана со поништување на нејзиниот контролен збир. Обидот за поправка прескокна преку модифицирачките покажувачи, но беше одбиен поради сложеност. Од оваа причина, беше одлучено да се отстрани функцијата наместо тоа.
Стандардно
На range() константите на класата сега се декларираат.
- А TypeError функцијата имаше различни промени: objectсега се фрла при поминување resources, или arrays како гранични влезови.
- Подетално ValueError се фрла при поминување
0for$step. - А ValueError се фрла при користење негативен
$stepза зголемување на опсезите. - Враќа
$stepе float што може да се толкува како int, сега е така. - А ValueError се фрла ако кој било аргумент е бесконечност или NAN.
- Еден
E_WARNINGсега се емитува ако$startor$endе празен стринг. Вредноста продолжува да се префрла на вредноста0. - Еден
E_WARNINGсега се емитува ако$startor$endима повеќе од еден бајт, само ако е не-нумерички стринг. - Еден
E_WARNINGсега се емитува ако$startor$endсе префрла на цел број бидејќи другиот граничен влез е број. (на пр.range(5, 'z');). - Еден
E_WARNINGсега се емитува ако$stepе float при обид за генерирање опсег на знаци, освен ако двата гранични влеза се нумерички стрингови (на пр.range('5', '9', 0.5);не произведува предупредување). - range() сега произведува список на знаци ако еден од граничните влезови е цифра од стринг наместо да го префрла другиот влез во int (на пр.
range('9', 'A');).
<?php
range('9', 'A'); // ["9", ":", ";", "<", "=", ">", "?", "@", "A"], as of PHP 8.3.0
range('9', 'A'); // [9, 8, 7, 6, 5, 4, 3, 2, 1, 0], prior to PHP 8.3.0
?>
number_format() сега ракува со негативни
$decimals вредности со заокружување
$num to abs($decimals) цифри пред децималната точка. Претходно, негативни $decimals вредности беа игнорирани.
На file() проверката за грешки на знамињата сега ги фаќа сите невалидни знамиња. Особено FILE_APPEND претходно беше прифатено тивко.
SNMP
Типот на SNMP директивата INI беше отстранета. Оваа функција беше скршена со JIT за следење, како и со кешот за наследување, и беше оневозможена без начин да се овозможи од PHP 8.1.18 и PHP 8.2.5. И JIT за следење и кешот за наследување може да го променат shm откако скриптата ќе биде перзистирана со поништување на нејзиниот контролен збир. Обидот за поправка прескокна преку модифицирачките покажувачи, но беше одбиен поради сложеност. Од оваа причина, беше одлучено да се отстрани функцијата наместо тоа.