Naloga funkcije je, da prebere vrednosti, jih procesira in izvrši akcijo (npr. izpis v pregledovalnik) ali vrne novo vrednost ali oboje. Funkcija je del kode, katere naloga ni nujno takojšnja izvršitev akcije, ampak se lahko aktivira, ko to od nje zahteva skripta.
Funkcije so lahko vgrajene ali jih uporabnik napiše sam in za svoje delo zahtevajo podatke, ki jih obdelajo. PHP vsebuje veliko vgrajenih funkcij in preden se lotimo pisanja svoje, je vedno dobro pogledati, ali je morebiti takšna funkcija že napisana.
Definiranje funkcij
Funkcijo definiramo z uporabo izraza function
. Če funkcija zahteva argument, na podlagi katerega se izvrši, ga vpišemo v oklepaj in argumente ločimo z vejicami.
function neka_funkcija($argument1, $argument2)
{
// koda funkcije
}
<?php
function echoBR($txt){
echo ("$txt<br />");
}
echoBR("To je prva vrstica.");
echoBR("To je druga vrstica.");
echoBR("To je tretja vrstica.");
?>
To je druga vrstica.
To je tretja vrstica.
Najprej smo definirali funkcijo in jo nato uporabili s klicom funkcije. Ta funkcija zahteva argument (tekst), ki se vedno izpiše v novo vrstico. Funkcija se obnaša podobno kot izraz echo()
, vendar vsak naslednji tekst zapiše v novo vrstico. S tem lahko prihranimo pisanje kode HTML za novo vrstico (<br />
).
<?php
function izpisiPozdrav() {
echo 'Pozdrav iz funkcije! <br/>';
}
//klic funkcije
izpisiPozdrav();
?>
Primer funkcije s parametri:
<?php
function izpisiIme($ime) {
echo 'Moje ime je ' . $ime . '!<br/>';
}
//klic funkcije
izpisiIme('Janez');
?>
Funkcije, ki vrnejo vrednost
Vrednosti se lahko vrnejo s pomočjo neobveznega stavka return
. Vrnejo lahko katerikoli tip spremenljivke. Vrnitev vrednosti konča izvajanje funkcije in skripta, iz katere smo funkcijo klicali.
// Funkcija, ki vrne vrednost.
function sestevanje($prvo_stevilo, $drugo_stevilo)
{
$rezultat = $prvo_stevilo + $drugo_stevilo;
return $rezultat;
}
echo sestevanje(3,5); // izpiše "8"
<?php
function sestej($x,$y) {
$vsota = $x + $y;
return $vsota; //vrednost
}
//klic funkcije
echo '3 + 12 = ' . sestej(3,12);
?>