Kursy i Poradniki IT - Adrian Kowalski
Kurs Programowania PHP dla Początkujących
O lekcji

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.