CZĘŚĆ 09
Własne funkcje
PPrezentacja dla nauczyciela
Funkcja pozwala zamknąć powtarzalny algorytm w jednym miejscu, przetestować go na wielu zestawach danych i zachować porządek w kodzie. Na egzaminie INF.03 umiejętność wydzielenia logiki do funkcji to klucz do maksymalnej liczby punktów.
Definicja i wywołanie funkcji
Funkcja grupuje kod, który ma się powtarzać. Definicję zaczynamy słowem function, podajemy nazwę i nawiasy, a kod zamykamy w klamrach. Nazwa nie może zaczynać się cyfrą i nie rozróżnia wielkości liter.
Wywołanie to nazwa z nawiasami: wypiszNaglowek();. Funkcja bez parametrów nie przyjmuje żadnych danych, ale nadal może wypisywać treść albo zwracać wynik.
Dobrą praktyką jest jedna odpowiedzialność: funkcja albo liczy i zwraca, albo wypisuje. Mieszanie obu utrudnia ponowne użycie kodu.
function powitanie() {
echo '<p>Witaj w kursie PHP!</p>';
}
function linia() {
echo '<hr>';
}
powitanie();
linia();
powitanie();
Parametry i wartości domyślne
Parametry to dane przekazywane do funkcji. W definicji podajemy nazwy zmiennych, a przy wywołaniu wartości: cena(100, 0.23). Liczba argumentów musi się zgadzać z liczbą parametrów.
Parametr może mieć wartość domyślną: function cena($kwota, $vat = 0.23). Dzięki temu wywołanie z jednym argumentem też zadziała, a domyślna wartość zostanie użyta.
Parametry domyślne umieszczamy na końcu listy — inaczej PHP nie wie, który argument pominąć. Typ parametru można dopisać, np. int $ile.
function brutto($kwota, $vat = 0.23) {
return $kwota * (1 + $vat);
}
echo brutto(100);
echo '<p>Bez VAT: ' . brutto(100, 0) . '</p>';
echo '<p>Inna stawka: ' . brutto(200, 0.08) . '</p>';
Zasięg zmiennych i zwracanie wartości
Zmienna utworzona w funkcji jest lokalna — poza nią nie istnieje. Zmienna zewnętrzna nie jest widoczna w funkcji, chyba że przekażemy ją parametrem.
Do modyfikowania zmiennej zewnętrznej służy słowo global, ale w praktyce lepiej zwracać wynik i przypisywać go na zewnątrz. Kod jest wtedy prostszy do sprawdzenia i testowania.
Funkcja może zwrócić tablicę, gdy potrzebnych jest kilka wartości. return kończy działanie funkcji natychmiast — kod po nim się nie wykona.
function statystyki(array $liczby): array {
return [
'suma' => array_sum($liczby),
'srednia' => array_sum($liczby) / max(1, count($liczby)),
'ile' => count($liczby),
];
}
$wynik = statystyki([4, 8, 6]);
echo $wynik['suma'] . ' / ' . $wynik['srednia'];
Ćwiczenia
- 1Pierwsza funkcja bez parametrówpierwsza funkcja bez parametrówZadanie i podpowiedzi →
- 2Funkcja tworząca etykietęfunkcja tworząca etykietęZadanie i podpowiedzi →
- 3Funkcja z dwoma parametramifunkcja z dwoma parametramiZadanie i podpowiedzi →
- 4Oblicz koszt dostawyobliczenie kosztu dostawyZadanie i podpowiedzi →
- 5Pułapka braku return (znajdź błąd)brakujący return w funkcjiZadanie i podpowiedzi →
- 6Oddziel obliczanie od wyświetlaniaoddzielenie obliczeń od wyświetlaniaZadanie i podpowiedzi →
- 7Parametr domyślnyparametr z wartością domyślnąZadanie i podpowiedzi →
- 8Cena brutto z domyślnym VATcena brutto z domyślnym VATZadanie i podpowiedzi →
- 9Funkcja obliczająca rabatfunkcja obliczająca rabatZadanie i podpowiedzi →
- 10Warunek wewnątrz funkcjiwarunek wewnątrz funkcjiZadanie i podpowiedzi →
- 11Izolacja zasięgu zmiennychizolacja zasięgu zmiennychZadanie i podpowiedzi →
- 12Funkcja sprawdzająca (predykat bool)funkcja sprawdzająca (predykat bool)Zadanie i podpowiedzi →
- 13Funkcja formatująca statusfunkcja formatująca statusZadanie i podpowiedzi →
- 14Średnia ocen z tablicyśrednia ocen z tablicyZadanie i podpowiedzi →
- 15Funkcja filtrująca tablicęfunkcja filtrująca tablicęZadanie i podpowiedzi →
- 16Wycena biletu (kalkulator INF.03)wycena biletu z warunkamiZadanie i podpowiedzi →