Introdotto la prima versione beta del nuovo ramo del linguaggio di programmazione PHP 8. Il rilascio è previsto per il 26 novembre. Allo stesso tempo, sono state rilasciate versioni correttive di PHP 7.4.9, 7.3.21 e
7.2.33, che ha eliminato errori e vulnerabilità accumulati.
Sostegno argomenti della funzione denominata, che consentono di passare valori alla funzione in relazione ai nomi, ad es. È possibile passare argomenti in qualsiasi ordine e definire argomenti facoltativi. Ad esempio, "array_fill(start_index: 0, num: 100, valore: 50)".
Quando si chiamano metodi permesso utilizzando l'operatore “?”, che consente di avviare una chiamata solo se il metodo è presente, evitando controlli inutili per la restituzione del valore “null”. Ad esempio, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
Sostegno tipologie sindacali, definendo raccolte di due o più tipi (ad esempio, "funzione pubblica foo(Foo|Bar $input): int|float;").
Sostegno attributi (annotazioni) che consentono di associare metadati (come informazioni sul tipo) alle classi senza utilizzare la sintassi Docblock.
Supporto espressivo stile, che, a differenza di switch, può restituire valori, supportare condizioni di combinazione, utilizzare confronti di tipi rigorosi e non richiedere una specifica di "interruzione".
Mappa debole per creare oggetti che possono essere sacrificati durante la garbage collection (ad esempio, per archiviare cache non necessarie).
Opportunità utilizzando l'espressione “::class” per gli oggetti (analoga alla chiamata get_class()).
Opportunità definizioni nel blocco catch delle eccezioni che non sono legate alle variabili.
Opportunità lasciando una virgola dopo l'ultimo elemento nell'elenco dei parametri della funzione.
Nuove interfacce Stringabile per identificare eventuali tipi di stringa o dati che possono essere convertiti in una stringa (per i quali è disponibile il metodo __toString()).
Nuova caratteristica str_contains(), un analogo semplificato di strpos per determinare l'occorrenza di una sottostringa, nonché le funzioni str_starts_with() e str_ends_with() per verificare le corrispondenze all'inizio e alla fine di una stringa.
Funzione aggiunta fdiv(), che esegue un'operazione di divisione senza generare errori durante la divisione per zero.
Cambiato logica di unione delle stringhe. Ad esempio, l'espressione 'echo "sum:" . $a + $b' era precedentemente interpretato come 'echo ("sum: " . $a) + $b', mentre in PHP 8 verrà trattato come 'echo "sum: " . ($a + $b)'.
Stretto controllando le operazioni aritmetiche e di bit, ad esempio, le espressioni "[] % [42]" e "$oggetto + 4" genereranno un errore.
Implementato un algoritmo di ordinamento stabile in cui l'ordine di valori identici viene preservato tra esecuzioni diverse.