Der Typ iterable ist nun ein eingebauter Compile-Time-Alias
für array|Traversable.
Fehlermeldungen, die sich auf iterable
beziehen, werden
daher nun array|Traversable
verwenden. Die
Type-Reflection wird für einzelne iterable
(und
?iterable
) beibehalten, um einen
ReflectionNamedType mit dem Namen
iterable
zu erzeugen, jedoch wird die Bezeichnung
iterable
in Union-Typen (zusammengefassten Typen) in
array|Traversable
umgewandelt.
Das Datumsformat gesendeter Cookies ist nun 'D, d M Y H:i:s
\G\M\T'
; vorher war es 'D, d-M-Y H:i:s T'
.
Die Streams von STDOUT, STDERR und STDIN werden nicht mehr geschlossen, wenn eine Ressource zerstört wird, was meistens der Fall ist, wenn die CLI beendet wird. Es ist jedoch immer noch möglich, diese Streams mit der Funktion fclose() und ähnlichen explizit zu schließen.
Die Funktionen strcmp(),
strcasecmp(), strncmp(),
strncasecmp() und substr_compare(),
die den binärsicheren Vergleich von Zeichenketten verwenden, geben nun
-1
, 0
und 1
zurück.
Die Funktionen dba_open() und dba_popen() verlangen nun zwingend die folgende Signatur:
$path
,$mode
,$handler
= null
,$permission
= 0644,$map_size
= 0,$flags
= null
Bei der Funktion dba_fetch() steht der optionale Parameter skip nun am Ende und folgt damit der Semantik von PHPs benutzerdefinierten Funktionen. Die Signatur lautet nun:
Die überladene Signatur: wird weiterhin akzeptiert, aber es wird empfohlen, die neue Standardvariante zu verwenden.Die Funktionen random_bytes() und random_int() lösen bei CSPRNG-Fehlern nun eine \Random\RandomException aus. Zuvor wurde stattdessen eine einfache \Exception ausgelöst.
Bei den Funktionen iterator_to_array() und
iterator_count() wurde der Parameter
iterator
von Iterator auf
iterable erweitert, wodurch Arrays übergeben werden können.
Die Eigenschaften von DatePeriod werden nun korrekt deklariert.
Die Instanzen von IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone, und Transliterator sind nicht mehr serialisierbar. Zuvor konnten sie zwar serialisiert werden, aber wenn sie deserialisiert wurden, erzeugten sie unbrauchbare Objekte oder die Deserialisierung schlug fehl.
Die Unterstützung für libmysql wurde entfernt und es ist nicht mehr möglich, mysqli mit libmysql zu kompilieren. Die Erweiterung mysqli kann von nun an nur noch mit mysqlnd kompiliert werden. Alle libmysql-Features, die in mysqlnd nicht verfügbar sind, wurden entfernt:
MYSQLI_IS_MARIADB
ist veraltetDie benötigte Mindestversion der Oracle-Client-Bibliothek ist nun 11.2.
NUL-Zeichen (\0
) in Suchmustern werden nun unterstützt.
Der Versuch, die INI-Direktive session.cookie_samesite zu ändern, während die Session aktiv ist oder nachdem bereits eine Ausgabe gesendet wurde, schlägt nun fehl und gibt eine Warnung aus. Damit wird das Verhalten an alle anderen INI-Einstellungen für Sessions angeglichen.
sqlite3.defensive ist nun
INI_USER
.
Die Funktion getimagesize() meldet nun die
tatsächlichen Abmessungen, Bits und Kanäle von AVIF-Bildern; zuvor wurden
die Abmessungen als 0x0
zurückgegeben, und Bits und
Kanäle wurden überhaupt nicht zurückgegeben.
Die Eigenschaften der Klasse tidy sind nun korrekt deklariert; die der Klasse tidyNode sind nun korrekt als schreibgeschützt deklariert.
Die Erweiterung Zip wurde auf Version 1.20.0 aktualisiert, wodurch die folgenden Methoden hinzugefügt wurden:
Die INI-Direktiven für Integerwerte wurden um die Möglichkeit erweitert,
binäre (0b
/0B
) und oktale
(0o
/0O
) Präfixe anzugeben.
INI-Direktiven, die mit einer Null (0
) beginnen, werden
weiterhin als oktaler Integer interpretiert.
Wenn bestimmte schlecht formatierte Werte verarbeitet werden, wird nun eine Warnung ausgegeben, während dies zuvor stillschweigend ignoriert wurde. Aus Gründen der Abwärtskompatibilität werden diese Werte weiterhin so interpretiert wie bisher. Dies betrifft die folgenden Einstellungen: