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.