PHP 8.5 wprowadza rozszerzenie URI, operator pipe i ulepszenia składni
PHP 8.5 wprowadza nowe rozszerzenie URI, operator pipe oraz ulepszenia składni kluczy, zapewniając szybsze działanie i bardziej przejrzysty kod.
PHP, język programowania po stronie serwera używany głównie do tworzenia dynamicznych stron internetowych i aplikacji webowych, właśnie wydał wersję 8.5, dużą aktualizację, która wprowadza nową składnię, rozszerzone wsparcie dla atrybutów, poprawę wydajności oraz wiele funkcji opartych na RFC.
Jednym z najważniejszych dodatków jest nowa wbudowana rozszerzenie URI. Zapewnia spójne API do analizowania i modyfikowania adresów URL, zgodne zarówno z RFC 3986, jak i standardami URL WHATWG. Wspierane przez uriparser i Lexbor, zastępuje parse_url() w scenariuszach, gdzie wymagana jest dokładna obsługa zgodna ze standardami.
Kolejnym ważnym punktem tej wersji jest wprowadzenie operatora potokowego (|>), który umożliwia łączenie funkcji od lewej do prawej. Eliminuje to głęboko zagnieżdżone wywołania funkcji, co sprawia, że potoki transformacji są łatwiejsze do czytania i utrzymania. Wartości przechodzą bezpośrednio przez wywoływalne obiekty, w tym funkcje strzałkowe i częściowe zastosowania, takie jak trim(...).
PHP 8.5 poprawia również obsługę obiektów dzięki składni clone-with. Deweloperzy mogą teraz aktualizować wybrane właściwości podczas klonowania obiektu za pomocą clone($obj, ['prop' => value]), upraszczając wzorzec „with-er” i umożliwiając jego użycie w klasach tylko do odczytu bez dodatkowego kodu.
Kolejnym dodatkiem jest atrybut #[\NoDiscard], który wydaje ostrzeżenie, gdy wartość zwracana przez funkcję zostaje niezamierzenie zignorowana. Pomaga to wychwycić błędy w API, gdzie zwracana wartość jest wymagana do poprawnego działania, przy czym (void) jest dostępne, gdy programista świadomie wybierze jej zignorowanie.
Język rozszerza również wsparcie dla wyrażeń wykonywanych w czasie kompilacji. Statyczne zamknięcia i funkcje pierwszej klasy są teraz dozwolone w wyrażeniach stałych, co umożliwia ich użycie w argumentach atrybutów, domyślnych wartościach właściwości i stałych klasowych.
Ulepszenia związane z wydajnością obejmują trwałe uchwyty udostępniania cURL. Dzięki curl_share_init_persistent() uchwyty udostępniania przetrwają pomiędzy żądaniami i ponownie wykorzystają wcześniej zainicjalizowane dane połączenia, zmniejszając nakład pracy przy wielokrotnych operacjach sieciowych w przypadku aplikacji działających przez dłuższy czas.
Dwie nowe funkcje pomocnicze, array_first() i array_last(), oferują czytelniejsze obsługiwanie typowych przypadków. Obie zwracają null dla pustych tablic, co upraszcza łączenie z operatorem łączenia z wartością domyślną i eliminuje potrzebę ręcznego sprawdzania kluczy.
Dodatkowe zmiany obejmują szeroki zakres funkcji językowych. Błędy krytyczne teraz zawierają ślady wywołań, atrybuty mogą odnosić się do stałych, a właściwości statyczne obsługują asymetryczną widoczność.
Właściwości mogą być oznaczone jako final za pomocą promocji właściwości w konstruktorze. Dodatkowo, PHP wprowadza nowe metody DOM, takie jak getElementsByClassName() i insertAdjacentHTML(), oraz nowe funkcje pomocnicze, takie jak grapheme_levenshtein().
Ostatecznie, w PHP 8.5 wprowadzone zostały przestarzałości, które obejmują usunięcie niekanonicznych nazw rzutowań, wycofanie operatora backtick jako aliasu dla shell_exec(), ostrzeżenia dla nieprawidłowych rzutowań float-to-int oraz ograniczenia w używaniu null jako indeksu tablicy. Starsze metody serializacji __sleep() i __wakeup() są teraz miękko przestarzałe na rzecz __serialize() i __unserialize().
Aby uzyskać więcej informacji na temat wszystkich zmian w PHP 8.5, odnieś się do oficjalnego ogłoszenia wydania lub do tej strony.
