Rozpoczęły się beta-testy PHP 8

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.

Głównym innowacje PHP 8:

  • Zwiększ moc Kompilator JIT, którego zastosowanie poprawi produktywność.
  • 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”.

    $wynik = dopasowanie($wejście) {
    0 => „cześć”,
    '1', '2', '3' => „świat”,
    };

  • Skrócona składnia definicje klas, umożliwiające połączenie definicji konstruktora i właściwości.
  • Nowy typ zwrotu - statyczny.
  • Nowy typ - mieszany, którego można użyć do określenia, czy funkcja akceptuje parametry różnych typów.
  • Wyrażenie rzucać do obsługi wyjątków.
  • 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.
  • Źródło: opennet.ru

Dodaj komentarz