Načrtovanje in razvoj spletnih aplikacij

Funkcije v PHP

Funkcija je poimenovan del kode, ki ga lahko večkrat uporabimo. Z njo več ukazov združimo v smiselno celoto in jih nato po potrebi pokličemo na različnih mestih v programu.

PHP vsebuje veliko vgrajenih funkcij, poleg njih pa lahko pišemo tudi lastne funkcije. Uporaba funkcij izboljša preglednost kode, zmanjša podvajanje in olajša vzdrževanje programa.

Pomni: Funkcije uporabljamo zato, da isto kodo zapišemo samo enkrat, nato pa jo lahko večkrat uporabimo.

Osnovna pravila

  • Funkcijo definiramo s ključno besedo function.
  • Vsaka funkcija ima ime, lahko ima parametre in lahko vsebuje ukaze v telesu funkcije.
  • Funkcijo izvedemo tako, da jo pokličemo z njenim imenom.
  • Funkcija lahko nekaj izpiše ali pa vrne vrednost s stavkom return.
  • Pri izbiri imena funkcije uporabljamo jasna in smiselna imena, ki opisujejo njeno nalogo.

Pozor: Če je ime funkcije nejasno ali nepovezano z njenim namenom, je koda težje berljiva in jo je težje vzdrževati.

Vgrajene funkcije v PHP

PHP vsebuje veliko vgrajenih funkcij, ki so razdeljene po različnih področjih uporabe. Nekatere so namenjene delu z nizi, druge z tabelami, datumi, datotekami, filtri ali matematiko. Ko poznamo osnovne skupine funkcij, lažje izberemo ustrezno rešitev za določen problem.

Funkcije za delo z nizi

Funkcija Opis
strlen() vrne dolžino niza
strtoupper() pretvori niz v velike črke
strtolower() pretvori niz v male črke
trim() odstrani presledke in druge znake z začetka in konca niza
explode() razdeli niz na več delov in vrne tabelo
implode() združi elemente tabele v niz

Funkcije za delo s tabelami

Funkcija Opis
count() prešteje elemente tabele
sort() uredi elemente tabele naraščajoče
rsort() uredi elemente tabele padajoče
array_push() doda enega ali več elementov na konec tabele
array_pop() odstrani zadnji element tabele
array_merge() združi dve ali več tabel v eno tabelo

Funkcije za delo z datumi in časom

Funkcija Opis
date() oblikuje datum in čas v izbran zapis
time() vrne trenutni čas v obliki časovnega žiga
mktime() ustvari časovni žig iz podanih vrednosti datuma in časa
strtotime() pretvori besedilni opis datuma ali časa v časovni žig

Funkcije za matematične izračune

Funkcija Opis
abs() vrne absolutno vrednost števila
round() zaokroži število
ceil() zaokroži število navzgor
floor() zaokroži število navzdol
max() vrne največjo vrednost
min() vrne najmanjšo vrednost

Funkcije za delo z datotekami

Funkcija Opis
file_exists() preveri, ali datoteka obstaja
file_get_contents() prebere vsebino datoteke v niz
file_put_contents() zapiše vsebino v datoteko
fopen() odpre datoteko za branje ali pisanje
fclose() zapre odprto datoteko
unlink() izbriše datoteko

Funkcije za filtriranje in preverjanje podatkov

Funkcija Opis
filter_var() filtrira ali preveri posamezno vrednost
filter_input() prebere in filtrira vhodni podatek
htmlspecialchars() pretvori posebne znake v entitete HTML
strip_tags() odstrani oznake HTML in PHP iz niza
is_numeric() preveri, ali je vrednost številska
empty() preveri, ali je vrednost prazna

Pomni: Vgrajene funkcije v PHP so razdeljene po področjih. Če poznamo osnovne skupine funkcij, hitreje najdemo ustrezno rešitev za delo z nizi, tabelami, datumi, datotekami ali vhodnimi podatki.

Definiranje funkcije

Funkcijo definiramo s ključno besedo function. Za njo zapišemo ime funkcije, seznam parametrov v oklepajih in telo funkcije v zavitih oklepajih.

function nekaFunkcija($argument1, $argument2) {
   // koda funkcije
}

V običajnih primerih lahko funkcijo v PHP pokličemo tudi pred mestom, kjer je zapisana v kodi, vendar je zaradi preglednosti pogosto smiselno, da so definicije funkcij zapisane na urejen in predvidljiv način.

Pomni: Funkcija je najprej definirana, nato pa jo v programu pokličemo, kadar jo potrebujemo.

<?php
function echoBR($txt) {
    echo $txt . "<br>";
}

echoBR("To je prva vrstica.");
echoBR("To je druga vrstica.");
echoBR("To je tretja vrstica.");
?>
To je prva vrstica.
To je druga vrstica.
To je tretja vrstica.

V prikazanem primeru funkcija prejme besedilo kot argument in ga izpiše v novo vrstico.

Funkcija brez parametrov

Nekatere funkcije delujejo brez parametrov. Takšne funkcije izvedemo preprosto s klicem njihovega imena in oklepajev.

<?php
function izpisiPozdrav() {
    echo "Pozdrav iz funkcije!<br>";
}

izpisiPozdrav();
?>
Pozdrav iz funkcije!

Pomni: Funkcijo brez parametrov uporabimo takrat, ko za svoje delovanje ne potrebuje dodatnih vhodnih podatkov.

Funkcija s parametrom

Parameter je spremenljivka v definiciji funkcije. Ko funkcijo pokličemo, ji posredujemo argument. Tako lahko ista funkcija deluje z različnimi vrednostmi.

<?php
function izpisiIme($ime) {
    echo "Moje ime je " . $ime . "!<br>";
}

izpisiIme("Janez");
?>
Moje ime je Janez!

Pomni: Parameter je zapisan v definiciji funkcije, argument pa je konkretna vrednost, ki jo funkciji posredujemo ob klicu.

Funkcije, ki vrnejo vrednost

Funkcija lahko samo nekaj izpiše, lahko pa tudi vrne vrednost s stavkom return. Ko PHP izvede return, se izvajanje funkcije konča, klic funkcije pa dobi vrnjeno vrednost.

function sestevanje($prvoStevilo, $drugoStevilo) {
   $rezultat = $prvoStevilo + $drugoStevilo;
   return $rezultat;
}
echo sestevanje(3, 5);
<?php
function sestej($x, $y) {
    $vsota = $x + $y;
    return $vsota;
}

echo "3 + 12 = " . sestej(3, 12);
?>
3 + 12 = 15

Pozor: Funkcija, ki uporablja return, vrednost vrne klicu funkcije. To ni isto kot neposreden izpis z ukazom echo.

Primerjava: echo ali return

Lastnost Izpis z echo Vračanje z return
Namen neposreden izpis rezultata vrnitev vrednosti v nadaljnjo obdelavo
Uporaba kadar želimo rezultat takoj prikazati kadar želimo rezultat shraniti, računati ali uporabiti drugje
Nadaljnja obdelava omejena enostavna

Pomni: Če želimo rezultat samo prikazati, pogosto uporabimo echo. Če želimo rezultat še naprej uporabljati v programu, je primernejši return.

Sodobnejši zapis s tipi

V sodobnem PHP lahko parametrom in povratni vrednosti določimo tudi tip. Tako je koda pogosto bolj jasna, pregledna in varnejša.

<?php
function sestejStevili(int $x, int $y): int {
    return $x + $y;
}

echo sestejStevili(4, 6);
?>

Tak zapis pove, da funkcija pričakuje dve celi števili in vrne celo število.

Pomni: Tipske deklaracije izboljšajo berljivost kode in pomagajo pri pravilnejši uporabi funkcij.

Priporočila

  • Funkcije naj imajo jasna in opisna imena.
  • Vsaka funkcija naj opravlja eno jasno določeno nalogo.
  • Pri večkrat uporabljeni kodi je smiselno uporabiti funkcijo namesto ponavljanja istih ukazov.
  • Kadar rezultat potrebujemo tudi drugje v programu, je priporočljivo uporabiti return.
  • Pri sodobni kodi je koristno uporabljati tudi tipske deklaracije.
  • Pri reševanju pogostih nalog najprej preverimo, ali PHP že vsebuje ustrezno vgrajeno funkcijo.

Pozor: Predolga funkcija, ki opravlja več različnih nalog, zmanjša preglednost programa in oteži odpravljanje napak.

Pogoste napake

  • Funkcija nima jasnega in smiselnega imena.
  • V funkciji so združene naloge, ki bi jih bilo primerneje razdeliti v več manjših funkcij.
  • Zamenjana sta pojma parameter in argument.
  • Pričakuje se vrnjena vrednost, čeprav funkcija uporablja samo echo.
  • Funkcija ne vrne vrednosti, čeprav jo nadaljnja koda potrebuje za obdelavo.
  • Pri klicu funkcije niso posredovani ustrezni argumenti.
  • V kodi se ponavljajo enaki ukazi, namesto da bi bili združeni v funkcijo.
  • Za pogosto nalogo se piše lastna rešitev, čeprav PHP že vsebuje ustrezno vgrajeno funkcijo.

Pozor: Napačna izbira med echo in return je pogost razlog, da program ne daje pričakovanih rezultatov.

Sklep

Funkcije so eden temeljnih gradnikov programiranja v PHP. Omogočajo bolj pregledno, krajšo in lažje vzdrževano kodo. Pri njihovi uporabi je pomembno, da razumemo razliko med parametri in argumenti, med izpisom in vračanjem vrednosti ter da funkcije načrtujemo jasno in smiselno. Poleg lastnih funkcij pa je koristno poznati tudi osnovne skupine vgrajenih funkcij, saj te pogosto že ponujajo učinkovito rešitev za vsakdanje programske naloge.