Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

10 najlepszych funkcji PHP 7.4

Daniel Dan CEO and co-founder / YSBM Group Ltd.
Poznaj 10 najciekawszych funkcji PHP 7.4, m.in. preloading, funkcje strzałkowe i typed properties.
10 najlepszych funkcji PHP 7.4

Dlaczego niektóre języki programowania cieszą się dużą popularnością, a inne odchodzą w niepamięć? Powodów może być wiele, a niektóre z nich to, np. prostota składni, funkcjonalność, społeczność programistów i ich wsparcie.

Ponieważ świat IT nieustannie się rozwija, technologie programistyczne muszą cały czas zapewniać nowe funkcje, aktualizacje i rozszerzenia. Jest to jeden z najważniejszych powodów decydujących o sukcesie danego języka.

Lubię programować w PHP ze względu na częste ulepszenia wprowadzane każdego roku. Od czasu pojawienia się PHP 5 w 2004 roku, wydajność podwoiła się, a może nawet potroiła. Wierzę również, że PHP będzie popularny jeszcze przez wiele lat.

Nic zatem dziwnego, że drugi rok z rzędu znajduje się on w pierwszej dziesiątce najpopularniejszych języków programowania według StackOverflow Developer Survey 2019. W tym roku zajął on 8 miejsce, czyli o jedną pozycję wyżej niż rok wcześniej.

28 listopada 2019, światło dzienne ujrzała wersja 7.4, która ma szansę stać się jednym z najbardziej rozbudowanych update'ów w historii.  W tym artykule omówię jej najważniejsze cechy i funkcje. Zaczynajmy!


Obsługa funkcji strzałkowych

Anonimowe funkcje i domknięcia mogą się wydawać za bardzo rozwlekłe w PHP, szczególnie na tle JavaScript, gdzie są często wykorzystywane. Ich implementacja i utrzymanie w PHP są również o wiele bardziej złożone.

Wprowadzenie obsługi funkcji strzałkowych umożliwia programistom PHP oczyszczenie kodu i sprawi, że składnia będzie bardziej zwięzła. W rezultacie, daje to wyższy poziom czytelności i prostoty kodu.

Jeśli wcześniej musieliście napisać taki fragment kodu:

function cube($n){

return ($n * $n * $n);

}

$a = [1, 2, 3, 4, 5];

$b = array_map('cube', $a);

print_r($b);


To w PHP 7.4 będzie można go przepisać w taki sposób:

$a = [1, 2, 3, 4, 5];

$b = array_map(fn($n) => $n * $n * $n, $a);

print_r($b);


Zatem dzięki możliwości tworzenia zgrabnego i krótszego kodu, proces tworzenia aplikacji internetowych będzie przebiegał szybciej.


Obsługa typowanych właściwości (typed properties)

Podczas gdy wcześniej nie można było zadeklarować typu dla zmiennych klasowych i właściwości (w tym właściwości statycznych), teraz programiści mogą łatwo je zakodować, bez potrzeby tworzenia getterów i setterów.

Wspierane są wszystkie typy deklaracji (za wyjątkiem void i callable), więc możesz używać typów wartości null, int, float, array, string, object, iterable, self, bool i parent.

Jeśli programista spróbuje przypisać wartość o niewłaściwym typie, na przykład, deklarując $name jako string, to otrzyma komunikat TypeError.

Podobnie jak w przypadku funkcji strzałkowych, typowane właściwości pozwalają także inżynierom PHP na skrócenie i uporządkowanie kodu.


Preloading

Preloading to proces ładowania plików, frameworków i bibliotek do OPcache. Jego głównym celem w PHP 7.4 jest zwiększenie wydajności. Jest to świetny dodatek.

Ze skonfigurowanym OPcache pliki z kodem biorą udział w przetwarzeniu żądania tylko pierwszy raz, następnie są tylko sprawdzane pod kątem zmian. Preloading umożliwia serwerowi ładowanie określonych plików kodu do pamięci współdzielonej. Należy również pamiętać, że będą one stale dostępne dla wszystkich kolejnych żądań bez dodatkowych kontrolowania plików pod kątem zmian.

Warto również zaznaczyć, że podczas preloadingu PHP eliminuje niepotrzebne wywołania include, rozwiązuje zależności klasowe oraz łączy z cechami, interfejsami itd.


Kowariancja i kontrawariancja

W tej chwili PHP ma głównie niezmienne typy parametrów i zwracanych wartości, co wiąże się z pewnymi ograniczeniami. Wraz z wprowadzeniem kowariantnych wartości zwracanych (typy są uporządkowane od bardziej szczegółowych do bardziej ogólnych) i kontrawariantnych parametrów (typy są uporządkowane od bardziej ogólnych do bardziej szczegółowych), programiści będą mogli zmienić typ parametru na jeden z jego supertypów. Zwrócony typ z kolei można łatwo zastąpić jego podtypem.


Słabe referencje

W PHP 7.4, klasa WeakReference pozwala twórcom stron internetowych zapisać link do obiektu, który nie zapobiega jego zniszczeniu (nie mylić z klasą WeakRef pochodzącą od rozszerzenia Weakref). Dzięki tej funkcji, mogą oni łatwiej implementować struktury przypominające pamięć podręczną.

Oto przykład użycia tej klasy: 

<?php

$obj = new stdClass;

$weakref = WeakReference::create($obj);

var_dump($weakref->get());

unset($obj);

var_dump($weakref->get());

?>


Pamiętaj też, że słabe referencje nie mogą być serializowane.


Null Coalescing Assignment Operator

Null Coalescing Assignment Operator to kolejna nowość PHP 7.4. Łączy on operator łączenia wartości z przypisaniem, a więc idzie krok dalej niż null coalescing operator znany z PHP 7.0. Dzięki temu zamiast pisać:

$this->data[‘author’] = $this->data[‘author’] ?? ‘Unknown’


możemy zapisać:

$this->data[‘author’] ??= ‘Unknown’


Operator spread w wyrażeniu tablicowym

PHP 7.4 da inżynierom możliwość korzystania z operatora spread w tablicach, który jest szybszy od array_merge. Pojawienie się tej funkcji można tłumaczyć dwojako. Po pierwsze, operator spread jest uważany za strukturę języka, a array_merge jest funkcją. Drugi powód jest taki, że czas kompilacji można teraz zoptymalizować pod kątem stałych tablicowych, a w rezultacie zwiększa to wydajność PHP 7.4.

Oto przykład rozpakowywania argumentów w wyrażeniu tablicowym:

$parts = ['apple', 'pear'];

$fruits = ['banana', 'orange', ...$parts, 'watermelon'];

var_dump($fruits);


Możliwe będzie także wielokrotne poszerzenie tej samej tablicy. Ponadto, ponieważ normalne elementy można dodawać przed lub po operatorze spread, programiści będą mogli używać składni PHP w tablicy.


Mechanizm serializacji obiektów

W nowej wersji PHP dostępne są dwie nowe metody: __serialize i __unserialize. Łącząc wszechstronność interfejsu Serializable z podejściem do wdrażania metod __sleep i __wakeup, mechanizm ten pozwoli programistom uniknąć problemów związanych z dostosowaniem obecnych metod. Dowiedz się więcej tutaj.


Mechanizm refleksji w referencjach

Biblioteki, takie jak symfony/var-dumper, w dużym stopniu opierają się na ReflectionAPI w celu dokładnego wyświetlania zmiennych. Wcześniej niestety brakowało odpowiedniej obsługi mechanizmu refleksji dla referencji, co zmusiło biblioteki do polegania na hackach w celu wykrywania referencji. PHP 7.4 dodaje klasę ReflectionReference, która rozwiązuje ten problem.


Obsługa rzucania wyjątków z __toString ()

Wcześniej nie było takiej możliwości. Powodem był fakt, że zmiana obiektów na łańcuchy znaków zachodzi w wielu funkcjach standardowej biblioteki i nie wszystkie są gotowe, aby „przetworzyć” wyjątki poprawnie. W ramach RFC przeprowadzono kompleksowy audyt konwersji string w bazie kodu i ograniczenie to zostało usunięte.


Podsumowanie

Istnieje wiele nowych funkcji PHP, które zmniejszają zużycie pamięci i znacznie zwiększają wydajność. Daje to możliwość uniknięcia wcześniejszych ograniczeń, pisania czystszego kodu i szybszego tworzenia rozwiązań internetowych.

Wersja 3 jest również dostępna do pobrania i testowania na serwerach programistów. Nie polecam jednak używania jej na serwerach produkcyjnych i projektach na żywo.


To oficjalne tłumaczenie z języka angielskiego, a oryginał tekstu przeczytasz tutaj.

Nie przegap treści Bulldogjob
Subskrybuj artykuły

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej