logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

PHP lekcije - lekcija 7 - PHP funkcije i funkcionalno programiranje

26/05/2025, by Ivan

Mislím da smo se već približili trenutku kada je vreme... vreme da zaista počnemo da programiramo. Nakon ove lekcije moći ćete da kažete da ste programirali u PHP-u. Vrlo često treba pisati kod koji se ponavlja na drugim stranicama, u drugim .php fajlovima. Da ne biste duplirali taj kod, u PHP-u postoje funkcije.

Funkcija je nezavisni deo koda koji izvršava određene proračune. Primere takvih funkcija ste već videli u prethodnim lekcijama:

time() - funkcija koja vraća broj sekundi od početka Unix ere.

print(), echo() - funkcije koje omogućavaju prikaz HTML-a.

floor() - funkcija koja izračunava celobrojni deo iz decimalnog broja.

Verovatno ste primetili kako se označavaju funkcije – pomoću dve zagrade (). Opšti zapis funkcije je: ime_funkcije(). Pravila imenovanja funkcija su ista kao i za promenljive, samo što funkcije nemaju znak dolara već imaju zagrade.

Od čega se sastoji funkcija, videćemo na primeru:

<?php
function plus_one($x){  // definicija funkcije
  $x = $x + 1;              // telo funkcije
  return $x;                  // vraćena vrednost
}

$y = 1;
$y = plus_one($y);    // poziv funkcije
print $y;
?>

Iz naziva funkcije je jasno da ona uvećava promenljivu za jedan. Hajde sada da razložimo od čega se sastoji funkcija:

Ime funkcije

Ime funkcije se postavlja kao i ime promenljive:

  1. Ime funkcije mora počinjati slovom ili donjom crtom "_".
  2. Ime funkcije može sadržati samo slova, brojeve i donju crtu (A-Z, a-z, 0-9, _).
  3. Ime funkcije ne sme sadržati razmake. Ako je ime funkcije složeno od više reči, one treba da budu odvojene donjom crtom (npr. my_function()) ili velikim slovima (camelCase) npr. myFunction().

Za definisanje funkcije koristimo reč function koja označava da sledi ime funkcije.

Telo funkcije

To je kod koji funkcija izvršava. U našem primeru to je:

function plus_one($x){
  $x = $x + 1; // telo funkcije
  return $x;     // telo funkcije
}

Telo funkcije je obavijeno vitičastim zagradama {}.

Vraćena vrednost

Već smo pomenuli "vraćanje vrednosti" i sada je vreme da objasnimo šta to znači. Vrednost koja ide posle reči return je vraćena vrednost, odnosno rezultat izvršavanja funkcije. U našem primeru vraćamo vrednost promenljive $x.

Parametri funkcije

Parametri funkcije su promenljive ili vrednosti koje se navode u okruglim zagradama nakon imena funkcije. U našem primeru prosleđujemo jedan parametar $x, ali može ih biti i više, razdvojeni zarezom:

<?php
function myFunction($x1, $x2, $x3){

}

$y = myFunction($z, 34, 'Zdravo, svete!');
?>

Ako prilikom definicije funkcije navedemo određeni broj parametara, to pokazuje koliko ih je neophodno proslediti pri pozivu funkcije. Ako broj parametara ne bude odgovarao, dobićete grešku:

<?php
function myFunction($x1, $x2, $x3){

}

$y = myFunction(34, 'Zdravo, svete!'); // pogrešan poziv funkcije izaziva grešku!!!
?>

Obratite pažnju da u definiciji koristimo lokalna imena promenljivih, dok pri pozivu funkcije možemo proslediti bilo koje vrednosti ili promenljive.

Hajde da vidimo kako funkcije rade na primeru jednostavne matematičke funkcije. Recimo da imamo funkciju y = -2x + 4. Izračunaćemo vrednosti funkcije za različite vrednosti argumenta x.

<?php
function myFunction($x){
  $y = -2 * $x + 4;
  return $y;
}

$z1 = myFunction(1);
$z2 = myFunction(2);
$z3 = myFunction(3);
print $z1 . '<br />' . $z2 . '<br />' . $z3;
?>

Rezultat će biti vrednosti -2, 0, 2. Verujem da vam je sada jasnije kako funkcije rade.

Sada da malo pričamo o funkcionalnom programiranju. Verovatno ste već shvatili zašto se ovaj stil programiranja naziva funkcionalnim – zato što je osnova programiranja mnogo funkcija, desetine u svakom fajlu. A kako se snaći sa tolikim brojem funkcija? Odgovor je jednostavan. Objasniću na primeru.

<?php
function incr($x){
  $x++;
  return $x;
}

function decr($y){
  $y--;
  return $y;
}

$z = 0;
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = decr($z);
print $z;
?>

Kao što je prikazano u primeru, povećali smo $z četiri puta za 1 i smanjili jednom za 1, tako da je konačni rezultat 3. Sada ćemo funkcije premestiti ispod primera.

<?php
$z = 0;
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = decr($z);
print $z;

function incr($x){
  $x++;
  return $x;
}

function decr($y){
  $y--;
  return $y;
}

?>

Ako izvršite ovaj kod, rezultat neće biti drugačiji, i dalje će biti 3. To je zato što PHP pronalazi funkcije bez obzira na to gde su definisane u odnosu na pozive. Ali šta ako imam 50, 100 ili 1000 funkcija? Odgovor je da ih treba razvrstati prema funkcionalnosti i organizovati u foldere i fajlove. Hajde da napravimo dva fajla:

decr.php:

<?php
  function decr($y){
  $y--;
  return $y;
}?> 

incr.php:

<?php
  function incr($x){
  $x++;
  return $x;
}?>

Definicije funkcija treba ukloniti iz index.php, jer ponovna definicija funkcije istog imena izaziva grešku. Takođe, pozivanje funkcije bez definicije izaziva grešku, zato budite pažljivi.

Sada je potrebno da uključimo fajlove sa funkcijama pomoću include u index.php:

<?php
include 'incr.php';
include 'decr.php';

$z = 0;
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = incr($z);
$z = decr($z);
print $z;
?>

Sada možete koristiti kod iz incr.php i decr.php, a da ne zatrpavate index.php. Kao što vidite, rezultat je isti, i dalje 3.

Ovo nije sve od mogućnosti funkcionalnog programiranja u PHP-u, u narednim lekcijama ćemo detaljnije proučiti ovaj stil programiranja.