PHP 8.0.26 Released!

Sonstige Änderungen

PHP-Kern

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.

Änderungen in SAPI-Modulen

CLI

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.

Geänderte Funktionen

PHP-Kern

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.

DBA

Die Funktionen dba_open() und dba_popen() verlangen nun zwingend die folgende Signatur:

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

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:

dba_fetch(string|array $key, resource $handle, int $skip): string|false
Die überladene Signatur:
dba_fetch(string|array $key, int $skip, resource $handle): string|false
wird weiterhin akzeptiert, aber es wird empfohlen, die neue Standardvariante zu verwenden.

Random

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.

Standard-PHP-Bibliothek (SPL)

Bei den Funktionen iterator_to_array() und iterator_count() wurde der Parameter iterator von Iterator auf iterable erweitert, wodurch Arrays übergeben werden können.

Sonstige Änderungen bei Erweiterungen

Date

Die Eigenschaften von DatePeriod werden nun korrekt deklariert.

Intl

Die Instanzen von IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, 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.

MySQLi

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:

OCI8

Die benötigte Mindestversion der Oracle-Client-Bibliothek ist nun 11.2.

PCRE

NUL-Zeichen (\0) in Suchmustern werden nun unterstützt.

Session

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

sqlite3.defensive ist nun PHP_INI_USER.

Standard

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.

Tidy

Die Eigenschaften der Klasse tidy sind nun korrekt deklariert; die der Klasse tidyNode sind nun korrekt als schreibgeschützt deklariert.

Zip

Die Erweiterung Zip wurde auf Version 1.20.0 aktualisiert, wodurch die folgenden Methoden hinzugefügt wurden:

Änderungen bei der Handhabung von INI-Dateien

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:

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top