Funkcia je uložená sada príkazov, ktorá má svoje meno a môžeme ju vykonávať. PHP ich samo o sebe ponúka obrovské množstvo. Okrem toho si môžeme vytvoriť vlastné funkcie, čo sa dnes tiež naučíme.
Vytvoríme si jednoduchú funkciu. Bude sa volať pozdrav
a jej úlohou bude vypísať slovo Zdravím.
function pozdrav() { echo "Zdravím"; }
Teraz ju zavoláme.
pozdrav(); // vypíše: Zdravím
My však chceme, aby naša funkcia podporovala rôzne pozdravy. Využijeme tzv. parameter funkcie - ten určuje, ako sa funkcia bude správať. Píšeme ho do zátvoriek.
/* definícia funkcie */ function pozdrav($text) { echo $text; } /* volanie funkcie - vypíše Čau */ pozdrav("Čau"); /* volanie funkcie - vypíše Nazdar */ pozdrav("Nazdar");
Parametrov môže byť aj viac - vtedy ich oddeľujeme čiarkami.
/* definícia funkcie */ function pozdrav($text, $meno) { echo "$text, $meno!"; } /* volanie funkcie s 2 parametrami */ pozdrav("Ahoj", "Jano"); // vypíše: Ahoj, Jano!
Niektoré parametre môžu byť nepovinné. Užívateľ ich nemusí pri volaní zadať. Použijú sa hodnoty, ktoré určí tvorca funkcie.
/* funkcia s nepovinným parametrom meno */ function pozdrav($text, $meno = "Jožo") { echo "$text, $meno!"; } pozdrav("Dobrý deň", "pán Mrkvička"); // výsledok: Dobrý deň, pán Mrkvička! pozdrav("Dobrý deň"); // výsledok: Dobrý deň, Jožo!
Za nepovinným parametrom však nemôžu nasledovať žiadne povinné.
Ako parameter sa dá použiť i premenná:
$vecer = "Dobrý večer"; pozdrav($vecer);
Ak chceme obsah takýchto premenných upravovať, musíme použiť tzv. referenciu - dáme pred nich znak &
.
function pridaj_otaznik(&$retazec) { $retazec .= '?'; } $text = "Rečnícka otázka"; pridaj_otaznik($text); echo $text; // vypíše: Rečnícka otázka?
Funkcia môže kľúčovým slovom return
vrátiť hodnotu - väčšinou je to spracovaný výsledok alebo číslo chyby. Teraz napríklad chceme, aby sa výsledný pozdrav v našej funkcii nevypísal, ale aby sme s ním mohli ďalej pracovať.
function pozdrav($meno) { $oslovenie = "Vitaj"; return "$oslovenie, $meno!"; } $vysledok = pozdrav("Eva"); $vysledok[0] = "v"; echo "Tak $vysledok"; // vypíše: Tak vitaj, Eva!
Toto je skôr na doplnenie znalostí: PHP podporuje volanie funkcií, kde ako ich názov uvediete premennú. Viac v príklade:
function prva() { echo "Prvá funkcia."; } function druha() { echo "Druhá funkcia."; } $premenna = "prva"; $premenna(); // zavolá prvú funkciu $premenna = "druha"; $premenna(); // zavolá druhú funkciu
PHP obsahuje veľké množstvo vstavaných funkcií - napr. na prácu s reťazcami, časom, súbormi, databázou; matematické, sieťové funkcie a podobne.
Niektoré sú jeho neoddeliteľnou súčasťou, kvôli iným je nutné pridať do PHP knižnicu. Nejaké knižnice sú k PHP tiež pribalené.
Napríklad funkcia strrev
vráti prevrátený reťazec daný parametrom.
echo strrev("bla bla"); // vypíše: alb alb
Funkcia strtoupper
zas vráti reťazec napísaný veľkými písmenami.
echo strtoupper("bla bla"); // vypíše: BLA BLA
Ako sa dá vypísať text, ktorý bude najprv prevrátený a potom premenený na veľké písmená? Najjednoduchší spôsob je „vnorenie funkcií do seba“:
echo strtoupper(strrev("bla bla")); // vypíše ALB ALB
Podobne môžeme pracovať s akýmikoľvek funkciami.