Rozpoczęto testy beta PHP 8

Przedstawiony pierwsza wersja beta nowej gałęzi języka programowania PHP 8. Premiera planowana na 26 listopada. Równocześnie przygotowano poprawki do PHP 7.4.9, 7.3.21 oraz
7.2.33, które usuwają zgromadzone błędy i luki bezpieczeństwa.

Podstawowe nowości PHP 8:

  • Włączenie kompilatora JIT, którego zastosowanie poprawi wydajność.
  • Wsparcie nazwanych argumentów funkcji, pozwalających na przekazywanie wartości do funkcji w powiązaniu z nazwami, tzn. można przekazywać argumenty w dowolnej kolejności oraz definiować argumenty opcjonalne. Na przykład, „array_fill(start_index: 0, num: 100, value: 50)”.
  • Przy wywołaniu metod zezwolono zastosowanie operatora „?”, który pozwala na inicjowanie wywołania tylko wtedy, gdy metoda jest obecna, co pozwala uniknąć zbędnych kontroli na zwracaną wartość „null”. Na przykład, „$dateAsString = $booking->getStartDate()?->asDateTimeString()”;
  • Wsparcie typów unii, definiujących kolekcje z dwóch lub więcej typów (na przykład „public function foo(Foo|Bar $input): int|float;”).
  • Wsparcie atrybuty (adnotacje), umożliwiające powiązanie metadanych (np. informacji o typach) z klasami bez użycia składni Docblock.
  • Wsparcie dla wyrażeń dopasowanie, które w przeciwieństwie do switch mogą zwracać wartości, wspierają łączenie warunków, stosują surowe porównanie typów i nie wymagają podania „break”.

    $result = match($input) {
    0 => „hello”,
    ‘1’, ‘2’, ‘3’ => „world”,
    };

  • Skrócony składnik definicji klas, pozwalający na połączenie definicji konstruktora i właściwości.
  • Nowy typ wartości zwracanej — static.
  • Nowy typ — mixed, który może być używany do określenia przyjmowania przez funkcję parametrów o różnych typach.
  • Wyrażenie throw do obsługi wyjątków.
  • WeakMap do tworzenia obiektów, które można przekazać do zbierania śmieci (np. do przechowywania opcjonalnych pamięci podręcznych).
  • Możliwość używania wyrażenia „::class” dla obiektów (odpowiednik wywołania get_class()).
  • Możliwość definicji w bloku catch wyjątków, które nie są przypisane do zmiennych.
  • Możliwość pozostawienia przecinka po ostatnim elemencie na liście parametrów funkcji.
  • Nowy interfejs Stringable do identyfikacji wszelkich typów lub danych stringowych, które można przekształcić w ciąg (dla których dostępna jest metoda __toString()).
  • Nowa funkcja str_contains(), uproszczony odpowiednik strpos do określenia wystąpienia podciągu, a także funkcje str_starts_with() i str_ends_with() do sprawdzania zgodności na początku i końcu ciągu.
  • Dodano funkcję fdiv(), wykonująca operację dzielenia bez zgłaszania błędu w przypadku dzielenia przez zero.
  • Zmodyfikowana logika łączenia ciągów. Na przykład wyrażenie ‘echo „suma: ” . $a + $b’ wcześniej interpretowane było jako ‘echo („suma: ” . $a) + $b’, a w PHP 8 będzie przetwarzane jako ‘echo „suma: ” . ($a + $b)’.
  • Zwiększona sprawdzanie operacji arytmetycznych i bitowych, na przykład wyrażenia „[] % [42]” i „$object + 4” będą prowadzić do błędu.
  • Zrealizowano stabilny algorytm sortowania, w którym przy różnych uruchomieniach zachowany jest porządek występowania identycznych wartości.
  • Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster