PHP 8.5 wprowadza pipe operator, rozszerzenie URI oraz funkcje array_first() i array_last(), które ułatwiają codzienne programowanie. Ta wersja poprawia czytelność kodu, pracę z URL-ami i debugowanie, oferując też optymalizacje wydajności oraz deprecjacje zbędnych elementów. Dzięki tym zmianom możesz pisać prostszy i szybszy kod dla swoich stron.
Spis treści
Nowe funkcje i ulepszenia
Pipe operator |>
Pipe operator |>, długo wyczekiwany przez programistów PHP, umożliwia łańcuchowe wywoływanie funkcji od lewej do prawej bez tworzenia zmiennych pośrednich. Zamiast pisać zagnieżdżone wywołania jak strtolower(str_replace(‘ ‘, ‘-‘, trim($title))), wystarczy $title |> trim($$) |> str_replace(‘ ‘, ‘-‘, $$) |> strtolower($$). Dzięki temu kod staje się czytelniejszy i łatwiejszy w utrzymaniu, szczególnie przy skomplikowanych operacjach na danych.
Rozszerzenie URI
PHP 8.5 wzbogaca się o wbudowane rozszerzenie URI do parsowania i normalizacji adresów URL zgodnych z RFC 3986 oraz WHATWG URL. Możesz teraz bezpiecznie obsługiwać linki bez dodatkowych bibliotek, na przykład używając klasy Uri\Rfc3986\Uri do wyciągnięcia hosta z adresu ‘https://php.net’. To znacznie upraszcza pracę z adresami w aplikacjach internetowych i zmniejsza ryzyko błędów.
Funkcje array_first() i array_last()
Nowe funkcje array_first() i array_last() pozwalają szybko pobrać pierwszy lub ostatni element tablicy, zwracając null, gdy tablica jest pusta. Zamiast kombinować z array_key_last() czy end(), po prostu używasz array_last($events). Te proste dodatki oszczędzają czas i porządkują kod przy pracy z listami danych.
Atrybut #[\\NoDiscard]
Atrybut #[\\NoDiscard] generuje ostrzeżenie, gdy pomijasz wartość zwrotną funkcji, co pomaga unikać pomyłek w API. Na przykład funkcja getPhpVersion() z tym atrybutem wygeneruje warning, jeśli nie wykorzystasz jej wyniku, chyba że świadomie użyjesz (void)getPhpVersion(). To narzędzie poprawia jakość i bezpieczeństwo twojego kodu.
Klonowanie z modyfikacją właściwości
Możesz teraz klonować obiekt i od razu zmieniać wybrane właściwości, przekazując tablicę asocjacyjną do clone(), jak clone($this, [‘alpha’ => $alpha]). Rozwiązanie idealnie pasuje do klas readonly i upraszcza wzorzec “with-er” bez kopiowania danych ręcznie. Wcześniej wymagało to dodatkowej logiki w metodach typu withAlpha().
Funkcje get_error_handler() i get_exception_handler()
Funkcje get_error_handler() i get_exception_handler() pozwalają sprawdzić aktualne obsługiwarki błędów i wyjątków w trakcie działania programu. Ułatwiają debugowanie i zrozumienie zachowania aplikacji. Dodatkowo wspierają stack trace dla błędów fatalnych, przyspieszając rozwiązywanie problemów.
Inne przydatne dodatki
PHP 8.5 dodaje stałe PHP_BUILD_DATE i PHP_BUILD_PROVIDER do kontroli daty kompilacji, opcję CLI php –ini=diff wyświetlającą zmiany w ustawieniach INI oraz funkcję locale_is_right_to_left() dla języków pisanych od prawej do lewej, jak arabski. Funkcja curl_multi_get_handles() pomaga zarządzać sesjami cURL, a persistentne handle cURL przyspieszają inicjalizację.
Deprecjacje i poprawki
W PHP 8.5 kończy się wsparcie dla starych rzutowań typu (boolean) czy (integer) – korzystaj z (bool) i (int). Zdeprecjonowano funkcje takie jak curl_close(), xml_parser_free() czy socket_set_timeout(), które stały się zbędne. Usunięto dyrektywę disable_classes w INI, a konstrukcja case w switch wymaga teraz dwukropka. Te zmiany porządkują język i szykują grunt pod kolejne wersje.
