headerphoto

Funkce

Je blok kódu, který lze jednou nadefinovat a pak jej vyvolávat z ostatních částí programu

  • Definice vlastních funkcí nám při programování šetří čas, vede k větší přehlednosti a strukturovanosti kódu.
  • Funkce bychom měli definovat na začátku skriptu, vždy předtím, než je poprvé použijeme.
  • Všechny proměnné použité ve funkci jsou pouze lokální - funkce je černá skříňka, která s hlavním skriptem komunikuje pouze pomocí vstupů a výstupu.
  • Pokud chceme použít ve funkci globální proměnné, musíme je buď předat odkazem, nebo zpřístupnit příkazem global.
  • Funkce může volat i jiné funkce, pokud volá sama sebe, jde o rekurzi.

Definice funkce má následující tvar:

function jmeno(parametr1, parametr2, ...)  
{         
příkazy;  
return hodnota; 
}       

U názvu funkce je třeba si dát pozor, aby se její název nekryl s názvem již zavedené funkce PHP (nemůžete použít např. echo, return...) Pomocí parametrů funkci předáváme hodnoty, které má zpracovat. Příkazem return funkce vrací svůj výsledek. U jednoduchých funkcí můžeme parametry zcela vynechat, stejně tak jako vracení hodnoty.

Příklady:

Funkce bez vstupních parametrů a bez návratové hodnoty

function pozdrav() 
{   
echo("ahoj");  
}     
//Následně již stačí naší funkci zavolat.
Pozdrav();

Funkce bez návratové hodnoty

Funkci si upravíme tak, že do 12 hodin se vypíše text "Dobré dopoledne" a od 12 hodin "Dobré odpoledne". Pro zjednodušení bude funkce pracovat tak, že jako parametr jí předáme pouze číslo, které bude udávat počet hodin.


function pozdrav($hodina) 
{   
if ($hodina < 12)
{               
echo "Dobré dopoledne!";   
}    
else  
{     
echo "Dobré odpoledne!";    
}  
  
}  
     
//Volání funkce pozdrav
$cas = 13; 
pozdrav($cas);  

Funkce s návratovou hodnotou

function vrat_mocninu($cislo)
{
return $cislo*$cislo;
}
echo(vrat(5));

Funkce vrácení českého názvu měsíce, vstupní parametr 1-12

function cesky_mesic($mesic)
{
$nazvy = array(1 => 'leden', 'únor', 'březen', 'duben', 'květen',
'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosi
nec');
return $nazvy[$mesic];
}
date_default_timezone_set("Europe/Berlin");         
echo cesky_mesic(date("n"));

Globální proměnné

Pracujeme-li uvnitř funkce s proměnnými, které jsou definované mimo tělo funkce, je třeba k nim přistupovat trochu odlišně:

$name = "Simon";
function jm(){
echo $GLOBALS['name'];
}
jm();
 

Pomocí $GLOBALS přistupujeme k proměnné deklarované vně funkce.

Rekurzivní funkce (funkce volá sama sebe)

function faktorial ($n)
{
if ($n == 0) return 1;
else
return $n * Faktorial ($n - 1);

}
function mocnina($cislo, $exp)
{
if ($exp) {
return $cislo * mocnina($cislo, $exp - 1);
}

return 1;

}

echo (mocnina(5, 3));
Design downloaded from Free Templates - your source for free web templates