czwartek,
Funkcje użytkownika w języku PHP
Jak tworzyć własne funkcje w języku PHP?
Funkcja to blok kodu zdefiniowany w jednej lokalizacji i wywoływany w wielu innych miejscach programu. Język PHP zawiera fabryczne funkcje, jednak użytkownik może obok nich tworzyć własne. Materiał porusza jedynie podstawowe zagadnienia związane z funkcjami.
Pierwszy zaprezentowany przykład ma na celu demonstrację użyteczności tej konstrukcji i nie ma konieczności dokładnego zrozumienia, co dokładnie się w nim dzieje. Wystarczy wiedzieć, że funkcja nazywa się date_interval i przyjmuje dwa argumenty, które są datami. Funkcja oblicza odległość między dwoma datami wyrażoną w dniach. Istnieje możliwość pominięcia drugiego argumentu, wtedy odległość liczona jest „od teraz”. Obliczanie takiej odległości „na piechotę” jest trudne, na programistę czyhają problemy związane z latami przestępnymi i zmiennymi ilościami dni w miesiącach, dlatego autor rozwiązania także użył gotowych funkcji, w tym przypadku fabrycznych, których połączenie pozwoliło uzyskać oczekiwany efekt. Kolejne przykłady są już bardziej klasycznymi propozycjami dla początkujących.
<?php
function date_interval($stop, $start = '') {
$start = ($start ? $start : $start = date('Y-m-d'));
$int = date_diff(date_create($start), date_create($stop));
return $int->format('%R%a');
}
// przykładowe wywołania funkcji
echo date_interval('2020-05-01','2020-01-01');
echo date_interval('2020-05-01');
?>
Udział wzięli
Klasycznym przykładem podczas wprowadzania funkcji jest hello_world. Przedstawiony przykład nie wyłamuje się z tej konwencji. Deklaracja funkcji zawiera słowo kluczowe function oraz nadany identyfikator (tutaj hello), tzw. ciało funkcji zawarte jest w nawiasach klamrowych i może składać się z wielu instrukcji. Identyfikator funkcji użytkownika nie może powodować konfliktu ze słowami zarezerwowanymi przez PHP, np. nie jest możliwe zadeklarowanie funkcji o nazwie function lub echo.
<?php
function hello() {
echo 'Hello CKZiU!';
}
// przykładowe wywołanie
hello();
?>
Udział wzięli
Kolejna przykładowa funkcja o tajemniczej nazwie kwadrat oblicza wartość przekazanego argumentu podniesionego do potęgi drugiej. W języku PHP istnieje fabryczna funkcja do potęgowania i dlatego prezentowany przykład jest mało użyteczny, jednak jest łatwy do zrozumienia.
<?php
function kwadrat($a) {
echo $a * $a;
}
// przykładowe wywołania
kwadrat(4);
kwadrat(444);
?>
Dobra funkcja powinna mieć możliwie szerokie zastosowanie. Wypływają z tego dwa wnioski. Po pierwsze najczęściej nie powinna być zbyt długa, a dany problem należy rozbić na kilka odrębnych funkcji. Po drugie nie należy wiązać jej z jednym typem zastosowania. Przykładowa funkcja kwadrat zawsze wypisuje wynik obliczeń. A co zrobić, kiedy ma być on wykorzystany do kolejnego działania matematycznego?
Problem rozwiązuje zamiana instrukcji echo na return. W przypadku funkcji, instrukcja return kończy jej działanie (do tego wrócimy w kolejnym materiale) oraz może zwrócić wartość określoną parametrem. Drugie przykładowe wywołanie funkcji kwadrat zostało wykorzystane do policzenia objętości jakiegoś prostopadłościanu.
<?php
function kwadrat($a) {
return $a * $a;
}
// przykładowe wywołania
echo kwadrat(4);
echo kwadrat(4) * 20;
?>
Udział wzięli
Funkcja może przyjmować kilka argumentów. Oddzielamy je przecinkiem. Własność tę ilustruje funkcja, która przyjmuje dwa argumenty i oblicza wartość brutto.
<?php
function brutto($netto, $vat) {
return $netto * (1 + $vat/100);
}
// przykładowe wywołanie
echo brutto(100,23);
?>
Kolejnym usprawnieniem w przypadku funkcji mogą być parametry domyślne. Zmodyfikowana funkcja brutto domyślnie przyjmuje obowiązującą w Polsce podstawową stawkę podatku od towarów i usług, jednak nie zabrania stosowania innej wartości. Możliwości funkcji brutto zademonstrowano w przykładowych wywołaniach, w przypadku stosowania stawki domyślnej potrzeba mniej kodu. Do tematu wrócimy w kolejnym materiale, ale warto zauważyć, że wartości domyślne dopisujemy od prawej strony ($netto, $vat = 23). Jeśli deklaracja będzie wyglądać odwrotnie ($vat = 23, $netto), nie ma możliwości skorzystania z usprawnienia.
<?php
function brutto($netto, $vat = 23) {
return $netto * (1 + $vat/100);
}
// przykładowe wywołania
echo brutto(100,5);
echo brutto(100);
?>
Podstawowe zalety używania funkcji
- Zmniejszenie rozmiaru kodu.
- Możliwość ponownego wykorzystania kodu w innych projektach.
- Lepsza czytelność kodu.
- Łatwiejsze zarządzanie kodem.
- Możliwość z korzystania z „obcego” kodu, oczywiście z zachowaniem zasad jego udostępnienia przez twórcę.
- Ogólnie zmniejszenie nakładu pracy wymaganego do wykonania aplikacji.