Argumenty nazwane (Named Arguments)
PHP 8 wprowadziło możliwość używania argumentów nazwanych w funkcjach. Dzięki temu można przekazywać argumenty w dowolnej kolejności, wskazując ich nazwę. To szczególnie pomocne w funkcjach, które mają wiele parametrów o domyślnych wartościach.
Przykład:
function przywitanie($imie, $wiek = 30, $miasto = "Warszawa") {
echo "Cześć, $imie! Masz $wiek lat i mieszkasz w $miasto.n";
}
// Wywołanie z argumentami nazwanymi
przywitanie(imie: "Alicja", wiek: 25, miasto: "Kraków");
// Wynik: Cześć, Alicja! Masz 25 lat i mieszkasz w Kraków.
?>
Argumenty mogą być przekazywane w dowolnej kolejności, pod warunkiem, że używamy ich nazw.
Domyślne typy zwracane (Return Type Declarations)
PHP 8 umożliwia teraz określenie domyślnego typu zwracanego przez funkcję, a także wprowadza silniejsze sprawdzanie typów, co zapewnia lepszą kontrolę nad tym, co dana funkcja zwraca.
W PHP 7.4 wprowadzono możliwość deklaracji typu zwracanego przez funkcję, ale w PHP 8 wprowadzono bardziej zaawansowane funkcjonalności, takie jak:
- Typy zwracane mogą być wymagane nawet dla metod statycznych, co było wcześniej trudniejsze do zaimplementowania.
- Możliwość zwracania typu
static
w funkcjach (już omawiane w kontekście metod statycznych, ale dotyczy również funkcji).
Przykład:
<?php
function dodaj(int $a, int $b): int {
return $a + $b;
}
echo dodaj(3, 4); // Wynik: 7
?>
Typ zwrócony przez funkcję musi pasować do zadeklarowanego typu, w przeciwnym razie PHP zgłosi błąd.
Unikalne typy unii (Union Types)
PHP 8 wprowadza typy unii dla funkcji, pozwalając na zadeklarowanie, że argument lub typ zwracany może być jednym z wielu typów. To daje większą elastyczność przy definiowaniu funkcji.
Przykład:
<?php
function przyjmijLiczbe(int|string $wartosc): void {
echo "Wartość to: $wartosc";
}
przyjmijLiczbe(5); // Wynik: Wartość to: 5
przyjmijLiczbe("tekst"); // Wynik: Wartość to: tekst
?>
W tym przypadku $wartosc
może być zarówno liczbą całkowitą (int
), jak i ciągiem znaków (string
).
Nullsafe Operator (operator nullsafe w funkcjach)
PHP 8 wprowadził operator nullsafe (?->
), który pozwala na bezpieczne wywoływanie metod lub funkcji na obiektach, które mogą być null
. Chociaż jest to typowa funkcjonalność obiektów, można jej używać również w funkcjach w przypadku pracy z obiektami.
Przykład:
<?php
function znajdzOsobe($osoba) {
return $osoba?->getImie(); // Bezpieczne wywołanie funkcji, jeśli $osoba jest null
}
echo znajdzOsobe(null); // Wynik: NULL
?>
Funkcje anonimowe z typami (Arrow Functions)
PHP 7.4 poprawił obsługę funkcji strzałkowych (tzw. arrow functions). Te funkcje pozwalają na tworzenie funkcji anonimowych w krótszej formie, a PHP 8 wprowadza możliwość deklarowania typów dla funkcji strzałkowych.
Przykład:
<?php
// Funkcja strzałkowa z typami
$sumuj = fn(int $a, int $b): int => $a + $b;
echo $sumuj(2, 3); // Wynik: 5
?>
Funkcje strzałkowe w PHP 8 umożliwiają deklarowanie typów wejściowych oraz zwróconych, co czyni je bardziej elastycznymi i czytelnymi.