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));