if a $_SESSION['example'] variable has not been set before being used, PHP version 7.4 just returned false, PHP 8.0 throws a PHP Warning: Undefined array key "example"Wenn nach einem Parameter mit einem Standardwert ein benötigter folgt, hat der Standardwert keinen Effekt. Mit PHP 8.0.0 ist das veraltet und kann durch das Entfernen des Standardwertes behoben werden, ohne dass Funktionalität verloren geht:
<?php
function test($a = [], $b) {} // Vorher
function test($a, $b) {}      // Danach
?>
     Eine Ausnahme der Regel stellen Parameter dar, welche der Form
     Typ $param = null entsprechen, bei welcher die Vorgabe null
     den Typ implizit nullbar macht. Diese Funktionalität bleibt erhalten, es
     wird jedoch empfohlen, den Typ explizit nullbar zu machen:
    
<?php
function test(A $a = null, $b) {} // Noch erlaubt
function test(?A $a, $b) {}       // Empfohlen
?>
     Das Aufrufen von get_defined_functions() mit
     exclude_disabled explizit auf false gesetzt, ist
     veraltet und hat keine Wirkung mehr.
     get_defined_functions() erlaubt keine deaktivierten
     Funktionen mehr.
    
enchant_broker_set_dict_path() und enchant_broker_get_dict_path() sind veraltet, da diese Funktionalität in libenchant < 1.5 und libenchant-2 nicht mehr vorhanden ist.
enchant_dict_add_to_personal() ist veraltet. enchant_dict_add() ersetzt diese Funktion.
enchant_dict_is_in_session() ist veraltet. enchant_dict_is_added() ersetzt diese Funktion.
enchant_broker_free() und enchant_broker_free_dict() sind ebenfalls veraltet. Das Objekt kann stattdessen mit unset() gelöscht werden.
     Die Konstanten ENCHANT_MYSPELL und
     ENCHANT_ISPELL  sind veraltet.
    
   libxml_disable_entity_loader() ist veraltet. Da nun
   jedoch libxml 2.9.0 vorausgesetzt wird, ist das externe Laden von Entitäten
   garantiert standardmäßig deaktiviert, und diese Funktion wird nicht mehr
   benötigt, um vor XXE-Angriffen zu schützen, es sei denn, das (immer noch
   angreifbare) LIBXML_NOENT wird verwendet. In diesem
   Fall ist es empfehlenswert, den Code unter Verwendung von
   libxml_set_external_entity_loader() zu überarbeiten, um
   das Laden externer Entitäten zu unterdrücken.
  
     Die Konstante PGSQL_LIBPQ_VERSION_STR nimmt nun den
     selben Wert an wie PGSQL_LIBPQ_VERSION und ist daher
     veraltet.
    
Die Funktions-Aliase in der pgsql-Erweiterung sind veraltet. Die folgende Liste zeigt, welche Funktionen stattdessen verwendet werden sollen.
     Sortierend vergleichende Funktionen welche true oder false
     zurückgeben, werden nun eine deprecation-Warnung zurückgeben und sollten
     durch eine Implementation ersetzt werden, welche einen Integer
     zurückgibt, der kleiner, gleich oder größer als 0 ist.
    
<?php
// Replace
usort($array, fn($a, $b) => $a > $b);
// With
usort($array, fn($a, $b) => $a <=> $b);
?>Die Verwendung einer leeren Datei als ZipArchive ist veraltet. Libzip 1.6.0 akzeptiert keine leeren Dateien als ZIP-Archive mehr. Der existierende Workaround wird in der nächsten Version entfernt.
Die prozedurale API von Zip ist veraltet. Als Ersatz kann ZipArchive genutzt werden. Die Iteration über alle Entitäten kann durch den Einsatz von ZipArchive::statIndex() und einer for-Schleife erreicht werden:
<?php
// Iteration mit der prozedualen API
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
    echo zip_entry_name($entry);
}
// Iteration mit der Objekorientierten API
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
    echo $entry['name'];
}
?>
     ReflectionFunction::isDisabled() ist veraltet, da
     es nicht mehr möglich ist, eine ReflectionFunction
     für eine deaktivierte Funktion zu erstellen. Die Methode gibt nun immer
     false zurück.
    
ReflectionParameter::getClass(), ReflectionParameter::isArray(), und ReflectionParameter::isCallable() sind veraltet. ReflectionParameter::getType() und die ReflectionType-APIs sollten stattdessen genutzt werden.
if a $_SESSION['example'] variable has not been set before being used, PHP version 7.4 just returned false, PHP 8.0 throws a PHP Warning: Undefined array key "example"If you try to get all methods / functions assigning an optional argument before a mandatory one, try this regex (single line)
<?php
function\s+[a-z][a-zA-Z0-9_]*\((?:\$[a-z][a-zA-Z0-9]*\s*,\s*)*
(?:\$[a-z][A-Za-z0-9_]*\s*=[^\$\)]+)+\$[a-z][a-zA-Z0-9_]*\)
?>
for
<?php
public function test($a, $b) {
$a = [];
$b = [$abc => $ss[],
];
}
private function too($c, $a = true, $b) {
}
protected function bar($a = []) {
}
public function foo($a, $b = true) {
} 
public function fooBar32($a=true, $b = [], $c) {
}
private function oo_bAr($a = []) {
}
?>
it will match too() and fooBar32() 
Have a nice migration! ;)