Przesłane przez pierwsza wersja beta nowej gałęzi języka programowania PHP 8. Wydanie zaplanowano na 26 listopada. Jednocześnie wydawane są wydania korygujące PHP 7.4.9, 7.3.21 i
7.2.33, który wyeliminował nagromadzone błędy i luki.
Wsparcie nazwane argumenty funkcji, umożliwiające przekazywanie wartości do funkcji w odniesieniu do nazw, tj. Można przekazywać argumenty w dowolnej kolejności i definiować argumenty opcjonalne. Na przykład „array_fill(start_index: 0, liczba: 100, wartość: 50)”.
Podczas wywoływania metod dozwolony użycie operatora „?”, który pozwala na zainicjowanie wywołania tylko wtedy, gdy metoda jest obecna, co pozwala uniknąć zbędnych kontroli pod kątem zwrócenia wartości „null”. Na przykład „$dateAsString = $booking->getStartDate()?->asDateTimeString()”;
Wsparcie typy związkowe, definiując kolekcje dwóch lub więcej typów (na przykład „funkcja publiczna foo(Foo|Bar $input): int|float;”).
Wsparcie atrybuty (adnotacje), które umożliwiają powiązanie metadanych (takich jak informacje o typie) z klasami bez użycia składni Docblock.
Wsparcie ekspresji mecz, które w przeciwieństwie do przełącznika mogą zwracać wartości, obsługiwać warunki łączenia, stosować ścisłe porównania typów i nie wymagają specyfikacji „przerwania”.
SłabaMapa do tworzenia obiektów, które można poświęcić podczas zbierania elementów bezużytecznych (na przykład w celu przechowywania niepotrzebnych pamięci podręcznych).
Okazja używając wyrażenia „::class” dla obiektów (analogicznie do wywołania funkcji get_class()).
Okazja definicje w bloku catch wyjątków, które nie są powiązane ze zmiennymi.
Okazja pozostawienie przecinka po ostatnim elemencie na liście parametrów funkcji.
Nowy interfejs Stringi w celu zidentyfikowania dowolnego typu ciągu znaków lub danych, które można przekonwertować na ciąg znaków (dla których dostępna jest metoda __toString()).
Nowa cecha str_zawiera(), uproszczony odpowiednik strpos do określania występowania podciągu, a także funkcje str_starts_with() i str_ends_with() do sprawdzania dopasowań na początku i na końcu łańcucha.
Dodano funkcję fdiv(), który wykonuje operację dzielenia bez zgłaszania błędu podczas dzielenia przez zero.
Zmieniono logika łączenia ciągów. Na przykład wyrażenie „echo „suma:” . $a + $b' było wcześniej interpretowane jako 'echo ("suma: " . $a) + $b', a w PHP 8 będzie traktowane jako "echo "sum: ". ($a + $b)”.
Dokręcone sprawdzanie operacji arytmetycznych i bitowych, na przykład wyrażenia „[] % [42]” i „$obiekt + 4” spowodują błąd.
Wdrożone stabilny algorytm sortowania, w którym zachowana jest kolejność identycznych wartości w różnych przebiegach.