Funkce v PHP dělíme na dvě základní skupiny – vestavěné a uživatelské.
Vestavěné funkce
Samotné PHP obsahuje doslova tisíce funkcí, které můžete libovolně používat ve svých skriptech. Těmto tedy říkáme vestavěné funkce. Jedním ze základních příkladů je funkce phpinfo:
<?php
phpinfo();
?>
Tato vestavěná funkce nám například vypíše kompletní informace o PHP serveru. Funkci můžeme přidat také určité parametry. Ty jsou umístěny v závorkách za názvem funkce. Příklad:
<?php
print('ahoj');
// V tomto případě pouze vypíše ahoj.
?>
Dále může funkce tzv. něco vracet (například vypisovat).
<?php
$cislo = pi();
// Proměnná $cislo bude obsahovat číslo pí
echo $cislo;
// Výpis čísla pí
echo '<br />';
// Zařídí, aby se další vypsalo na nový řádek
echo pi();
// Číslo pí je možné také vypsat přímo
?>
Nebo příklad z funkcí max:
<?php
$cislo = max(4,1);
// Proměnná $cislo bude obsahovat největší číslo z čísel 4 a 1.
echo $cislo;
// Výpis hodnoty proměnné $cislo
echo '<br>';
// Zařídí, aby se další číslo vypsalo na nový řádek. I tuto funkci můžeme vypsat takto:
echo max(4,1);
// Vypíše největší číslo z čísel 4 a 1
?>
Příklad využití vestavěné funkce náhodného čísla - mt_rand (elektronická verze házecí kostky) Funkce mt_rand vrací náhodné číslo. Má 2 parametry, a to minimální a maximální číslo z rozsahu, který má vrátit. V tomto případě 1 až 6.
<?php
$nahodne_cislo = mt_rand(1,6);
switch ($nahodne_cislo) {
case '1':
echo 'Padlo číslo 1';
break;
case '2':
echo 'Padlo číslo 2';
break;
case '3':
echo 'Padlo číslo 3';
break;
case '4':
echo 'Padlo číslo 4';
break;
case '5':
echo 'Padlo číslo 5';
break;
case '6':
echo 'Padlo číslo 6';
break;
}
?>
Seznam všech vestavěných funkcí PHP lze najít v oficiálním manuálu PHP - http://php.net nebo např zde - http://php.baraja.cz/
Uživatelské funkce
Pro vytváření uživatelských neboli vlastních funkcí se používá klíčové slovo funkcion. Za klíčovým slovem funkcion následuje název (jméno) funkce, které si sami zvolíme. Zjednodušeně to vypadá následovně:
<?php
function jmeno_funkce()
{
telo_funkce;
}
?>
Nyní si zkusíme konkrétní jednoduchý příklad, kde se pouze vypíše pozdrav Ahoj:
<?php
function vypis()
// Zde jsme vytvořili funkci s názvem vypis. Dále následuje její tělo. V tomto případě je to pouze příkaz k vypsání slova Ahoj
{
echo 'Ahoj';
}
vypis();
// Zde voláme funkci s názvem vypis. V tomto případě provede vypsání slova Ahoj.
?>
Uživatelské funkce s parametry
Další příklad ukazuje složitější funkci s parametry:
<?php
// Deklarace a definice funkce:
function TretiMocnina($Cislo)
{
$Vysledek = $Cislo * $Cislo * $Cislo;
return $Vysledek;
}
// Volání funkce TretiMocnina():
echo TretiMocnina(5); // Vypíše: 125
?>
Nejprve je vytvořena funkce s názvem TretiMocnina. Ta obsahuje parametr, který v tomto případě tvoří novou proměnnou s názvem $Cislo. V tělu funkce následuje operace, kdy vytvoříme novou proměnnou s názvem $Vysledek. Tomu je přiřazena operace, která násobí třikrát za sebou proměnnou $Cislo (protože chceme tvořit třetí mocninu, což je trojnásobek). Na dalším řádku máme slůvko returt což je příkaz, který nám vrací hodnotu proměnné $Vysledek. Následuje příkaz echo, který vypíše hodnotu proměnné TretiMocnina s parametrem 5. Neboli do proměnné $Cislo dosadíme tímto číslo 5, které se následně třikrát po sobě vynásobí a vytvoří tedy třetí mocninu. Další příklad ukazuje, že funkci můžeme ve skriptu použít, kolikrát chceme. Což se velmi často používá:
<?php
// Deklarace a definice funkce:
function TretiMocnina($Cislo)
{
$Vysledek = $Cislo * $Cislo * $Cislo;
return $Vysledek;
}
// Volání funkce TretiMocnina():
echo TretiMocnina(5); // Vypíše: 125
?>
Další ukázka uživatelské funkce (zdroj http://php.vrana.cz):
<?php
// Vrácení českého názvu měsíce
function cesky_mesic($mesic) {
static $nazvy = array(1 => 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec');
return $nazvy[$mesic];
}
echo cesky_mesic(date("n")) . "\n";
// Vrácení českého názvu dne v týdnu
function cesky_den($den) {
static $nazvy = array('neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota');
return $nazvy[$den];
}
echo cesky_den(date("w")) . "\n";
?>
Pozn.: znaky \n se v PHP používají pro odřádkování v kódu. Nikoliv ve webové stránce! Pro tu se musí použít klasické <br>
Globální a lokální proměnné
Jakákoliv proměnná, která je použita mimo jakoukoliv funkci, se v PHP nazývá globální proměnná. Zato ta, která je použita uvnitř funkce se nazývá lokální proměnná. Tyto proměnné se navzájem nijak nemíchají a jsou jakoby oddělené. Příklad:
<?php
$x = 4;
// Globální proměnná $x nastavena na 4.
function vypis_x()
{
echo $x;
// Tohle je pokus o výpis lokální proměnné $x.
}
echo vypis_x();
?>
Po spuštění dostanete asi toto chybové hlášení: Notice: Undefined variable: x in C:\wamp\www\index.php on line 7 Jde o to, že uvnitř funkce s názvem vypis_x se pokoušíme příkazem echo vypsat proměnnou $x. Takováto proměnná ale uvnitř této funkce neexistuje. Nachází se totiž mimo tuto funkci, tak že ji tento příkaz echo uvnitř funkce marně zkouší vypsat. Proměnná $x sice ve skriptu existuje, ale je je to globální proměnná, na kterou „zevnitř“ funkce nevidíme.
Poznámky k funkcím
- Funkce muže mít více vstupních parametrů. Ty se pak oddělují čárkou.
- Funkce v PHP mohou předávat parametry odkazem. To se provede tak, že před název proměnné v hlavičce funkce se uvede ampersand (&)
- V těle funkce mohou být definovány proměnné s klíčovým slovem static. Hodnotu takových proměnných si PHP mezi jednotlivými voláními funkce pamatuje.
- Funkce v PHP mohou být rekurzivní. To znamená, že funkce muže volat sebe samu.
- Funkce nemůže vracet více než jeden výstupní parametr. Ale muže vracet pole, takže se to dá obejít.
- Jedna uživatelská funkce muže volat jinou. Na pořadí, v jakém jsou uvedeny ve skriptu, přitom nezáleží. Volání funkce muže být uvedeno dokonce již dříve než definice funkce samotné.