| Rubrika Pre začiatočníkov
VI. Funkcie v PHP
PHP Funkciami dosiahneme prehľadnejší, čiže kratší kód, v ktorom sa o niekoľko týždňov môžeme ľahšie orientovať. Samozrejme uľahčovať si orientáciu v kóde sa snažíme nielen funkciami, ale aj poznámkami, logickými názvami premenných a pod. Ale o tom by mohla by samostatná kapitola.
Funkciu definujeme nasledovnou syntaxou:
function nazov_funkcie(paramater1,parameter2....) { príkazy; return výraz; }
Jednoduchý príklad na PHP funkciu
<?
function vypis_text() {
return "Moja prvá funkcia";
}
?>
Túto funkciu môžme v skripte neskôr zavolať jej názvom, čiže
príkazom: vypis_text(). Zátvorky za názvom funkcie v tomto
prípade nemusíme použiť. Používajú sa v prípade, že má funkcia
definované parametre a v tom spočíva sila funkcií. Využitie parametra
funkcie si vysvetlíme na príklade.
Táto funkcia nám zdvojnásobí zadané číslo:
<? //Funkcia nám zdvojnásobí parameter function zdvojnasob($a) { return $a * 2; } echo zdvojnasob(2); // vypíše 4 echo zdvojnasob(4); // vypíše 8 ?>
Funkcie samozrejme môžu mať viacero parametrov. Tieto parametre môžeme
vyjadriť priamym zápisom, ako v predošlom prípade. Ako parameter funkcie
môžeme však použiť aj premennú: echo zdvojnasob($cislo);
alebo dokonca výraz: <cod€>echo zdvojnasob(5–3);.
Tieto typy takisto môže funkcia vracať (return).
Dáme si ešte jeden príklad s použitím podmienky (pre zopakovanie z predchádzajúceho dielu) a viacerých parametrov. Funkcia nám vypíše väčšie z dvoch čísel:
<? //Funkcia vráti väčšie číslo function vacsie_cislo($a,$b) { if ($a > $b){ return $a; } else { return $b; } } //použijem túto premennú ako parameter funkcie $cislo = 12; //použijem taktiež výraz ako parameter, vypíše 12 (5-2 = 3; 3 je menšie ako 12) echo vacsie_cislo(5-2,$cislo); ?>
PREMENNÉ V PHP FUNKCIÁCH
Premenné použité vo funkciách ostávajú len vo vnútri funkcií. To znamená, že ak by sa použila premenná s takým istým názvom v skripte ako aj vo funkcii, tak tieto dve nemajú nič spoločné. Je to tak preto, aby funkcia nezmenila hodnotu globálnej premennej.
<? function premenne() { $premenna = 10; } $premenna = 1; // hodnota premennej premenne(); // zavolanie funkcie echo $premenna; // vypíše "1" - funkcia nezmenila hodnotu premennej Ak chceme použiť globálnu premennú, použijeme na to kľúčové slovo <code>global</code>. A je nutné na začiatku funkcie definovať, ktoré premenné budú globálne. //použitie globálnej premennej function global_Premenna() { global $premenna; $premenna = 10; } $premenna = 1; // hodnota premennej global_Premenna(); // zavolanie funkcie echo $premenna; //vypise "10" - funkcia zmenila hodnotu premennej, lebo sme s ňou pracovali ako s globálnou ?>
K definícii globálnych premenných môžme použiť namiesto global pole $GLOBALS, v ktorom má PHP uložené všetky globálne premenné. K $GLOBALS pristupujeme ako ku asociatívnemu poľu, kde index je názov premennej bez znaku „$“.
<? //použitie poľa $GLOBALS function PoleGlobals_Premenna() { $GLOBALS["premenna"] = 10; } $premenna = 1; $premenna2 = 2; PoleGlobals_Premenna(); echo $premenna; //vypise 10 ?>
Ak chceme aby premenná načítala svoju hodnotu pri volaní funkcie len po prvý krát použijeme na to kľúčové slovo static.
<? function Pripocitaj(){ static $cislo = 0; $cislo++; return $cislo; } Pripocitaj(); //vypise 1 Pripocitaj(); //vypise 2 ?>
PARAMETRE FUNKCIÍ
Niekedy sú parametre funkcií implicitne definované, alebo nepovinné. Napríklad môžeme upraviť našu funkciu Zdvojnasob() a pomenujeme ju Vynasob() a prvy parameter nám bude určovať číslo, ktoré chceme vynásobiť a druhé nám vyjadrí násobiteľ, ktorý bude mať implicitne nastavenú hodnotu „1“. Navyše zamedzíme násobeniu nulou.
<? function Vynasob($cislo,$nasobitel=1) { if ($nasobitel!=0){ $vysledok = $cislo * $nasobitel; return $vysledok; } else { echo "Násobenie nulou táto funkcia nepodporuje!"; } } echo Vynasob(2); // vypíše "2" vynásobí parameter implicitne číslom "1" echo Vynasob(2,2); // vypíše "4" nasobitel = "2" echo Vynasob(2,0); // vypíše chybovu hlasku ?>
REKURZIA
Rekurzia je vlastne volanie funckie vo vnútri tej istej funkcie. Rekurzia je nebezpečná v prípade tzv. utopenia rekurzie, kde hrozí pretečenie zásobníka (funkcia spúšťa samú seba do nekonečna). Klasickým príkladom rekurzie je výpočet faktoriálu :
<? function Faktorial ($n) { if ($n == 0) { return 1; } else { return $n * Faktorial ($n - 1); endif; } } ?>
Matej Lacko
naspäť
prispieť do diskusie [0]
Vyhľadávanie
Viac z rubriky
Pridať komentár



