## Nicht abwärtskompatible Änderungen

### Date

Die Methode DateTime::createFromImmutable() hat nun den vorläufigen Rückgabetyp static, vorher war es DateTime.

Die Methode DateTimeImmutable::createFromMutable() hat nun den vorläufigen Rückgabetyp static, vorher war es DateTimeImmutable.

In relativen Formaten akzeptieren die `number`-Symbole keine mehrfachen Vorzeichen mehr, z. B. `+-2`.

### ODBC

Die Erweiterung ODBC maskiert nun den Benutzernamen und das Passwort für den Fall, dass sowohl eine Zeichenkette für die Verbindung als auch Benutzername/Passwort übergeben werden und die Zeichenkette angehängt werden muss. Zuvor konnten Benutzerwerte, die zu maskierende Werte enthielten, eine fehlerhafte Verbindungszeichenkette erzeugen oder Werte aus vom Benutzer bereitgestellten Daten injizieren. Die Regeln für die Maskierung sollten mit dem Verhalten der .NET BCL DbConnectionOptions identisch sein.

### PDO_ODBC

Wenn eine Zeichenkette für die Verbindung übergeben wird, werden bei der Erweiterung PDO_ODBC auch der Benutzername und das Passwort maskiert. Siehe Änderung an der Erweiterung ODBC für weitere Details.

### Standard

Die Funktion glob() gibt nun ein leeres Array zurück, wenn alle Pfade durch open_basedir eingeschränkt sind. Zuvor gab sie `false` zurück. Außerdem wird nun eine Warnung ausgegeben, auch wenn nur einige Pfade durch open_basedir eingeschränkt sind.

FilesystemIterator::__construct(): Vor PHP 8.2.0 war die Konstante `FilesystemIterator::SKIP_DOTS` immer gesetzt und konnte nicht deaktiviert werden. Um das bisherige Verhalten beizubehalten, muss die Konstante explizit gesetzt werden, wenn der Parameter `flags` verwendet wird. Der Standardwert des Parameters `flags` wurde nicht geändert.

Die Funktionen strtolower(), strtoupper(), stristr(), stripos(), strripos(), lcfirst(), ucfirst(), ucwords() und str_ireplace() berücksichtigen die Locale nicht mehr. Sie führen die Umwandlung der Groß- und Kleinschreibung nun im ASCII-Format durch, als ob die Locale "C" wäre. Lokalisierte Versionen dieser Funktionen stehen in der Erweiterung MBString zur Verfügung. Darüber hinaus verwenden array_change_key_case() und die Sortierung mit `SORT_FLAG_CASE` nun ebenfalls die Umwandlung von Groß- und Kleinschreibung im ASCII-Format.

Die Funktion str_split() gibt bei einer leeren Zeichenkette nun ein leeres Array zurück. Zuvor gab sie in diesem Fall ein Array mit einem einzigen leeren Eintrag für die Zeichenkette zurück. Die Funktion mb_str_split() ist von dieser Änderung nicht betroffen, weil sie sich schon vorher so verhalten hat.

Die Funktionen ksort() und krsort() führen Vergleiche von numerischen Zeichenketten nun gemäß `SORT_REGULAR` durch und verwenden dabei die Standardregeln von PHP 8.

Die Funktion var_export() lässt bei exportierten Klassennamen den vorangestellten Backslash nicht mehr weg, d. h. diese sind nun voll qualifiziert.

### Standard-PHP-Bibliothek (SPL)

Die folgenden Methoden erzwingen nun ihre Signatur:

- SplFileInfo::_bad_state_ex()
- SplFileObject::getCsvControl()
- SplFileObject::fflush()
- SplFileObject::ftell()
- SplFileObject::fgetc()
- SplFileObject::fpassthru()

Die Methode SplFileObject::hasChildren() hat nun den vorläufigen Rückgabetyp false, vorher war es bool.

Die Methode SplFileObject::getChildren() hat nun den vorläufigen Rückgabetyp null, vorher war es ?RecursiveIterator.

Die Klasse GlobIterator gibt nun ein leeres Array zurück, wenn alle Pfade durch open_basedir eingeschränkt sind. Zuvor gab sie `false` zurück. Außerdem wird nun eine Warnung ausgegeben, auch wenn nur einige Pfade durch open_basedir eingeschränkt sind.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open