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:
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).
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.