SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Co nowego w PHP 8.1?
Szymon Zysk
Wydajność
Request time w symfony na
PHP 8.1 szybszy o ~23% niż w
wersji 7.4
Request time w laravel na
PHP 8.1 szybszy o ~21.5% niż w
wersji 7.4
Enums
Typ enum, umożliwia zdefiniowanie stałych typów danych z określonymi
wartościami.
Przykład:
Funkcje pomocnicze Enum
Cases - Zwraca tablice, ze wszystkimi wartościami
From - zwraca określoną wartość po polu value
tryFrom - podobnie jak from, ale jeśli wartość nie zostanie znaleziona, zwróci null
Rozszerzanie Enum
Readonly properties
Modyfikator readonly jest dostępny wyłącznie dla właściwości klas, zatem jeśli po
inicjalizacji spróbujemy zmienić wartość takiej właściwości, to wywoła to błąd.
Przydaje się to np. przy DTO, Value object.
Wartość musi mieć zadeklarowany typ i nie może posiadać wartości domyślnej.
Próba aktualizacji pola readonly
Dziedziczenie
Typ bezzwrotny
Typ never to nowy typ zwracany. Zgodnie z założeniem funkcja nie zwróci
wartości, tylko zgłosi wyjątek lub zakończy działanie kodu z wezwaniem die(),
exit(), trigger_error().
Przykład:
Co, gdy usuniemy `exit`?
Fibers
Jest to funkcjonalność, która umożliwia wykonanie kodu PHP we współbieżnym
wątku, z możliwością wstrzymywania i wznawiania tego kodu w dowolnym
momencie.
Użycie Fibers nie oznacza, że kod działa równolegle, ale że kod jest
wykonywany z dala od głównego wątku. Są to wątki tworzone i wykonywane przez
maszynę wirtualną PHP.
Przyda się do dzielenia zadań blokujących, takich jak odczyty sieciowe lub
operacje na plikach, i oddzielania ich od normalnej(synchronicznej) bazy kodu.
Stany
Wyodrębniamy kilka stanów dla Fibers.
● Started - Każde włókno, które zostało uruchomione przez metodę start(), bez różnicy czy zostało zawieszone
lub zakończone, będzie postrzegane jako rozpoczęte. Można to wykryć za pomocą metody isStarted()
● Suspended - Każde zawieszone wykonanie, przy pomocy funkcji suspend(), można wykryć to za pomocą
funkcji isSuspended()
● Running - Stan, w którym Fiber został uruchomiony i nie jest zawieszony ani zakończony. Stan można wykryć
za pomocą funkcji isRunning()
● Terminated - Gdy wykonanie kodu dobiegło końca lub został zwrócony błąd. Do wykrycia tego stanu można
użyć metody isTerminated().
Intersection Types
Możliwość zadeklarowania kilku wymaganych typów dla jednego argumentu.
Intersection Types tworzy się poprzez wpisanie & jako łącznika nazw klas i
interfejsów. Nie możemy łączyć & z | (union types).
Nowości w konstruktorze
Deklaracja pola w argumencie i ustawienie modyfikatora dostępu.
Możliwość utworzenia nowej instancji obiektu, jako wartość domyślna.
Nowości w tablicach
Array unpacking przy użyciu stringa. Rozpakowywanie tablic było już dozwolone w PHP 7.4, ale działało tylko z kluczami numerycznymi. Powodem, dla którego klucze łańcuchowe nie były wcześniej obsługiwane, jest to, że nie było zgody co do sposobu scalania duplikatów tablicy.
Funkcja array_is_list
Wbudowana funkcja, która określa czy tablica jest listą - czyli czy jej klucze są w
porządku liczb całkowitych i zaczynają się od 0.
Stałe
Dodana możliwość ustawienia finalnej stałej wartości.
Co już wiemy o PHP 8.2?
Deprecate dynamic properties
PHP 8.1

Mais conteúdo relacionado

Mais de PHPstokPHPstok

Jak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxJak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxPHPstokPHPstok
 
Blaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxBlaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxPHPstokPHPstok
 
Zarządzanie złożonością
Zarządzanie złożonościąZarządzanie złożonością
Zarządzanie złożonościąPHPstokPHPstok
 
Najczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPNajczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPPHPstokPHPstok
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychPHPstokPHPstok
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktycePHPstokPHPstok
 
Sztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistySztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistyPHPstokPHPstok
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitPHPstokPHPstok
 
PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePHPstokPHPstok
 

Mais de PHPstokPHPstok (14)

Jak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptxJak ograniczyć używanie tablic w PHP.pptx
Jak ograniczyć używanie tablic w PHP.pptx
 
Blaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptxBlaski i cienie pracy Project Managera.pptx
Blaski i cienie pracy Project Managera.pptx
 
Refaktoryzacja
RefaktoryzacjaRefaktoryzacja
Refaktoryzacja
 
Zarządzanie złożonością
Zarządzanie złożonościąZarządzanie złożonością
Zarządzanie złożonością
 
Clean Code
Clean CodeClean Code
Clean Code
 
Testy mutacyjne
Testy mutacyjneTesty mutacyjne
Testy mutacyjne
 
Najczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHPNajczęstsze błędy początkujących programistów PHP
Najczęstsze błędy początkujących programistów PHP
 
Bezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowychBezpieczeństwo aplikacji webowych
Bezpieczeństwo aplikacji webowych
 
Wzorce projektowe w praktyce
Wzorce projektowe w praktyceWzorce projektowe w praktyce
Wzorce projektowe w praktyce
 
Sztuka samodoskonalenia programisty
Sztuka samodoskonalenia programistySztuka samodoskonalenia programisty
Sztuka samodoskonalenia programisty
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnit
 
Docker
DockerDocker
Docker
 
SOLID
SOLIDSOLID
SOLID
 
PSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistycznePSR czyli dobre praktyki programistyczne
PSR czyli dobre praktyki programistyczne
 

PHP 8.1

  • 1. Co nowego w PHP 8.1? Szymon Zysk
  • 2. Wydajność Request time w symfony na PHP 8.1 szybszy o ~23% niż w wersji 7.4 Request time w laravel na PHP 8.1 szybszy o ~21.5% niż w wersji 7.4
  • 3. Enums Typ enum, umożliwia zdefiniowanie stałych typów danych z określonymi wartościami. Przykład:
  • 4.
  • 5. Funkcje pomocnicze Enum Cases - Zwraca tablice, ze wszystkimi wartościami
  • 6. From - zwraca określoną wartość po polu value tryFrom - podobnie jak from, ale jeśli wartość nie zostanie znaleziona, zwróci null
  • 8. Readonly properties Modyfikator readonly jest dostępny wyłącznie dla właściwości klas, zatem jeśli po inicjalizacji spróbujemy zmienić wartość takiej właściwości, to wywoła to błąd. Przydaje się to np. przy DTO, Value object.
  • 9. Wartość musi mieć zadeklarowany typ i nie może posiadać wartości domyślnej.
  • 12. Typ bezzwrotny Typ never to nowy typ zwracany. Zgodnie z założeniem funkcja nie zwróci wartości, tylko zgłosi wyjątek lub zakończy działanie kodu z wezwaniem die(), exit(), trigger_error(). Przykład:
  • 13. Co, gdy usuniemy `exit`?
  • 14. Fibers Jest to funkcjonalność, która umożliwia wykonanie kodu PHP we współbieżnym wątku, z możliwością wstrzymywania i wznawiania tego kodu w dowolnym momencie. Użycie Fibers nie oznacza, że kod działa równolegle, ale że kod jest wykonywany z dala od głównego wątku. Są to wątki tworzone i wykonywane przez maszynę wirtualną PHP. Przyda się do dzielenia zadań blokujących, takich jak odczyty sieciowe lub operacje na plikach, i oddzielania ich od normalnej(synchronicznej) bazy kodu.
  • 15. Stany Wyodrębniamy kilka stanów dla Fibers. ● Started - Każde włókno, które zostało uruchomione przez metodę start(), bez różnicy czy zostało zawieszone lub zakończone, będzie postrzegane jako rozpoczęte. Można to wykryć za pomocą metody isStarted() ● Suspended - Każde zawieszone wykonanie, przy pomocy funkcji suspend(), można wykryć to za pomocą funkcji isSuspended() ● Running - Stan, w którym Fiber został uruchomiony i nie jest zawieszony ani zakończony. Stan można wykryć za pomocą funkcji isRunning() ● Terminated - Gdy wykonanie kodu dobiegło końca lub został zwrócony błąd. Do wykrycia tego stanu można użyć metody isTerminated().
  • 16.
  • 17.
  • 18. Intersection Types Możliwość zadeklarowania kilku wymaganych typów dla jednego argumentu. Intersection Types tworzy się poprzez wpisanie & jako łącznika nazw klas i interfejsów. Nie możemy łączyć & z | (union types).
  • 19. Nowości w konstruktorze Deklaracja pola w argumencie i ustawienie modyfikatora dostępu.
  • 20. Możliwość utworzenia nowej instancji obiektu, jako wartość domyślna.
  • 21. Nowości w tablicach Array unpacking przy użyciu stringa. Rozpakowywanie tablic było już dozwolone w PHP 7.4, ale działało tylko z kluczami numerycznymi. Powodem, dla którego klucze łańcuchowe nie były wcześniej obsługiwane, jest to, że nie było zgody co do sposobu scalania duplikatów tablicy.
  • 22. Funkcja array_is_list Wbudowana funkcja, która określa czy tablica jest listą - czyli czy jej klucze są w porządku liczb całkowitych i zaczynają się od 0.
  • 23. Stałe Dodana możliwość ustawienia finalnej stałej wartości.
  • 24. Co już wiemy o PHP 8.2? Deprecate dynamic properties