Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

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($cis­lo); 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äť naspäť Pridať komentár k článku prispieť do diskusie [0]
RSS