Uvod
PHP (PHP: Hypertext Preprocessor) je skriptni jezik koji se izvršava na strani servera i omogućava dinamičko kreiranje HTML sadržaja (u skladu sa specifičnim zahtevima klijenta), povezivanje sa bazama podataka, kao i obavljanje drugih pozadinskih zadataka na serveru.
PHP je nastao 1994. ili, bolje rečeno, u pitanju je godina kada je danski programer Rasmus Lerdorf započeo razvoj jednostavnog sistema za kodiranje dinamičkih sadržaja za manje web prezentacije (da ne kažemo, "za lične potrebe" - čemu je odgovarao i ondašnji pun naziv jezika: Personal Home Page).
Međutim, tokom vremena jezik se razvi(ja)o, i postao prilično moćan i vrlo popularan.
Iako u novije vreme nije u pitanju jedina dostupna serverska tehnologija (ni iz daleka), PHP je često "sledeći prirodan korak" za sve pojedince koji su već savladali HTML, CSS i JavaScript i žele da se posvete izradi ozbiljnijih web aplikacija koje korisnicima (pri učitavanju stranica), ne isporučuju uvek isti sadržaj, već sadržaj koji nastaje interakcijom korisnika sa serverom.
U prvom članku o PHP-u, pažnju ćemo posvetiti osnovnim postavkama jezika PHP (a pre toga, i osnovnim principima back-end programiranja), u sledećih nekoliko članaka osvrnućemo se ukratko na različite protokole za razmenu podataka, a posle toga ćemo (u obliku tutorijala), detaljno obrađivati teme koje se tiču svakodnevnih 'zahvata' na strani servera.
Front-end, back-end, full-stack
Za početak, pre nego što pređemo na tematiku interpretacije skriptnih jezika na serverima i sam PHP, osvrnućemo se ukratko na sveprisutne pojmove front-end, back-end i full-stack programiranja, i na mesto koje jezik PHP zauzima u navedenoj klasifikaciji.
Front-end, je termin koji se odnosi na projektovanje i izradu vidljivih delova sajtova (odnosno, računarskih programa i informacionih sistema uopšte).
Drugim rečima, u pitanju je dizajn elemenata sa kojima korisnici direktno dolaze u kontakt, pri čemu se vodi računa o logičnom rasporedu i lakoj dostupnosti upravljačkih grafičkih elemenata (ali vrlo često i tekstualnih), sve u cilju postizanja što boljeg korisničkog iskustva.
Back-end, je termin koji se odnosi na projektovanje i izradu pozadinskih ("nevidljivih") delova sajtova (odnosno programa i informacionih sistema uopšte) i - za razliku od front-end komponenti - u ovom slučaju se ne radi o elemenatima programa/sajtova sa kojima se korisnici susreću direktno, već o procesima koji se tiču pravilne pripreme podataka koji se šalju korisniku, pri čemu se vodi računa o sigurnosti podataka i što efikasnijoj obradi (takođe u cilju postizanja što boljeg korisničkog iskustva).
Shodno navedenom, nije teško zaključiti da su HTML, CSS i JavaScript, front-end jezici, da je PHP back-end jezik, a da izraz full-stack, označava kombinaciju front-end i back-end pristupa.
Zarad upoznavanja sa principom funkcionisanja skriptnih jezika koji se izvršavaju na strani servera (i takođe, da bismo što bolje razumeli potrebu za takvim pristupom) - napravićemo osvrt na opšte principe učitavanja statičkih i dinamičkih sajtova (i sve izneto razmotrimo na jednostavnim primerima iz svakodnevne prakse).
Učitavanje statičkih sajtova
Kao što je od ranije poznato, browseri interpretiraju HTML stranice preko DOM strukture, a sama struktura DOM stabla, generiše se pri učitavanju HTML koda koji (na zahtev klijenta), server šalje klijentu.
Komunikacija između klijenta i servera pri učitavanju statičke stranice (u ponešto uprošćenom obliku i uz pretpostavku da ne dolazi do grešaka u izvršavanju), ima sledeći tok:
- klijent (browser), pokreće učitavanje HTML stranice * pozivanjem URL-a
- server prima zahtev, priprema HTML stranicu ** i vraća klijentu traženi sadržaj u obliku HTML koda
- browser prima HTML kod, kreira DOM strukturu i prikazuje stranicu u prozoru
Ukoliko učitana stranica nema potrebu za daljom (ili detaljnijom) komunikacijom sa serverom, komunikacija između klijenta i servera prestaje (sve dok je klijent eventualno ne inicira ponovo, pozivanjem istog URL-a, u nekom kasnijem trenutku).
Kao primer statičke stranice, zamislićemo galeriju slika poslovnog prostora (koju određena firma drži na svom sajtu): pri učitavanju, sve slike se preuzimaju sa servera i prosleđuju klijentu.
Međutim, šta ako u nekom drugom slučaju (na nekom drugom sajtu), pojam "galerija slika" ne podrazumeva nekoliko slika (koje posetiocu sajta treba da prikažu poslovni prostor, poslovna dostignuća, tim ljudi koji stoji iza poduhvata i sl), već je u pitanju galerija slika u doslovnom značenju - veća kolekcija umetničkih slika (ili fotografija), koje se broje stotinama ili hiljadama?!
Učitavanje dinamičkih sajtova
Pre svega, jasno je da su: preuzimanje više stotina slika i prikaz na jednoj HTML stranici, opcije koje u praktičnom smislu, ne dolaze u obzir, to jest, jasno je da bi učitavanje takvog statičkog sajta bilo u (krajnje povećem (!)), neskladu sa nepisanim pravilima web dizajna, prema kojima je preporučljivo da vreme učitavanja web stranice bude manje od dve sekunde.
U praktičnom smislu, funkcionisanje online galerija umetničkih slika podrazumeva da se iz velike kolekcije (koja se čuva na serveru), korisniku preko browsera prikazuje samo određeni podskup slika, a takođe je za očekivati i to, da izbor slika vrši sam korisnik.
Sve što smo naveli, podrazumeva pripremu podataka u skladu sa zahtevima korisnika (a ne, prosto učitavanje "istog sadržaja svaki put"), pa komunikacija između klijenta i servera u takvim okolnostima (i ovoga puta - u ponešto uprošćenom obliku i uz pretpostavku da ne dolazi do grešaka), ima sledeći tok:
- klijent bira parametre pretrage (preko padajućih menija ili drugih prigodnih elemenata): ime i prezime autora, raspon datuma u kome su slike nastale, tematiku, rezoluciju i slično
- serveru se prosleđuje zahtev za učitavanje stranice (koji sadrži parametre koji su izabrani u prethodnom koraku)
- nakon prijema zahteva, na serveru se obavlja obrada (u bazi podataka, traže se podaci o slikama koje zadovoljavaju zadate kriterijume)
- kreira se HTML stranica koja sadrži spisak pronađenih slika (u obliku odgovarajućeg HTML koda sa
<img>
tagovima) i šalje se nazad klijentu - završni deo komunikacije između klijenta i servera, ne razlikuje se mnogo od prethodnog primera - browser prima HTML kod (koji najverovatnije sadrži i reference za povezivanje sa CSS i JS datotekama - preko kojih su definisani grafički dizajn i UX elementi stranice), kreira se DOM stablo i prikazuje se stranica sa pronađenim slikama
Sada razumemo šta je svrha skriptnog jezika koji se izvršava na serveru, a pošto je ovaj članak posvećen PHP-u (i uz ogradu da nije baš u pitanju "knjiška" definicija), mogli bismo reći sledeće: PHP interpretator je program koji se izvršava na strani servera, interpretira PHP kod iz datoteka koje sajt koristi, generiše HTML kod shodno ulaznim parametrima i generisani kod šalje browseru klijenta.
To jeste ono što PHP interpretatori uglavnom rade (na većini sajtova), ali, svakako nije i jedino.
Preko PHP-a se takođe mogu pokretati i skripte koje se direktno izvršavaju na serveru (tako da se dejstvo pokrenutih skripti "ne vidi" u browseru).
Smatramo da je došlo vreme da se posvetimo PHP-u i sve navedeno počnemo da isprobavamo u praksi.
Instalacija PHP-a (pokretanje lokalnog web servera)
Budući da smo temi pokretanja lokalnog servera posvetili zaseban članak , nećemo se na ovom mestu previše baviti detaljima, ali, osvrnućemo se ponovo na najvažnije postavke: za kreiranje dinamičkih sajtova preko PHP-a (i isprobavanje primera u ovom članku), potreban je web server - softver koji "osluškuje" mrežni saobraćaj usmeren prema računaru na kome je sajt postavljen (pokušaje drugih računara da pristupe instaliranim sajtovima) i naravno - potrebna je instalacija PHP-a.
Najzgodnije je u tu svrhu (pogotovo u slučaju neiskusnijih korisnika), koristiti pakete programa kao što su XAMPP i WAMP (a naša preporuka za korisnike Windows-a je, kao i do sada, XAMPP).
Kada su lokalni web server i PHP interpretator pokrenuti (što se dešava, manje-više automatski, pošto se pokrene program XAMPP), možemo pokrenuti browser i potom, preko adrese localhost
, pristupati lokalnim sajtovima.
Kreiranje PHP skripti i naredba echo
Za početak, kreiraćemo najjednostavniju moguću "hello world" skriptu, a za čuvanje skripte koristite jednu od sledeće dve strukture direktorijuma i datoteka (adrese preko kojih se u browseru mogu otvarati sajtovi, takođe su prikazane u kodu):
D:\xampp\htdocs\sajtovi\01_hello_world\index.php
Adresa za pokretanje:
localhost/sajtovi/01_hello_world/
D:\xampp\htdocs\sajtovi\isprobavanje\01_hello_world.php
Adresa za pokretanje:
localhost/sajtovi/isprobavanje/01_hello_world.php
U skriptu unesite sledeći kod:
<?php
echo "Dobro došli na lokalni server!";
?>
Kada se skripta pokrene preko browsera, biće ispisano:
Dobro došli na lokalni server!
Glavna svrha PHP-a je - da vrati browseru određeni HTML sadržaj, a to se postiže upravo preko komande echo
.
Preko naredbe echo
, unapred zadate niske mogu se kombinovati sa vrednostima promenljivih (što ćemo videti u sledećem odeljku) i takođe, budući da smo spomenuli da komanda može vratiti HTML (a ne samo običan tekst), pogledajmo kako se to izvodi na krajnje jednostavan način.
Kreirajte novu PHP datoteku sa nazivom 02_echo_i_html
* (ili direktorijum sa istim nazivom u kome će biti datoteka index.php
) i unesite sledeći kod:
<?php
echo "<a href='#'>Link 1</a>";
?>
Pri pokretanju stranice, browser prikazuje link (a ne, običan tekst) i naravno, na isti način mogu se kreirati i drugi HTML elementi.
Promenljive u PHP-u
Promenljive u PHP-u označavaju se znakom $
(koji stoji direktno ispred identifikatora) i - slično kao u jeziku JavaScript - promenljive ne podležu strogoj tipizaciji.
Za isprobavanje, kreirajte novu skriptu i unesite sledeći kod:
<?php
$a = 12; // celobrojna promenljiva
$f = 54.559; // decimalna promenljiva
$c = 'Z'; // znak
$s = "Dobar dan!"; // niska
$b = true; // boolean
echo "Celobrojna vrednost: " . $a . "<br>";
echo "decimalna vrednost: " . $f . "<br>";
echo "Znakovna promenljiva: '" . $c . "<br>";
if ($b) {
echo "Uslov je zadovoljen.<br>";
echo "Niska: \"" . $s . "\"<br>";
// Da bi znaci navoda koji određuju
// početak i kraj niske, mogli da se
// razlikuju od znakova navoda koji
// treba da se pojave u ispisu,
// koristi se escape sekvenca \"
}
?>
Prethodna skripta sadrži i određene delove sa kojima se do sada nismo susretali, i stoga ćemo se detaljnije osvrnuti na opšte principe korišćenja promenljivih u PHP-u:
- promenljive u PHP-u se označavaju uz prefiks
$
, koji uvek mora stajati uz promenljivu (uz svaku pojavu promenljive u kodu) - promenljive (kao što smo već spomenuli), ne podležu tipizaciji, to jest (kao i u programskom jeziku JavaScript), tip promenljive se određuje dinamički (pri izvršavanju skripte)
- u naredbi
echo
, kao operator spajanja niski, koristi se.
(tačka) - i na ovaj način mogu se koristiti vrednosti promenljivih u ispisu - takođe, vidimo da se za prelazak u novi red može koristiti HTML tag
<br>
(break), baš kao i kada se piše "običan HTML u običnoj HTML datoteci" - kada je potrebno da se u ispisu pojave znaci navoda, može se koristiti escape sekvenca
\"
(na taj način, PHP interpretator pravi razliku između navodnika koji treba da se pojave u ispisu i navodnika koji određuju levu i desnu granicu niske)
Varijante kombinovanog ispisa
Već smo videli (na delu), osnovni mehanizam konkatenacije (spajanja niski):
<?php
echo "Početak niske " . $promenljiva . "ostatak niske";
echo $promenljiva . "<br>";
?>
Međutim, moguće je (a reklo bi se i - mnogo zgodnije), koristiti i drugi pristup, koji podrazumeva da se promenljiva navodi direktno unutar niske:
<?php
echo "Početak niske $promenljiva ostatak niske";
echo "$promenljiva <br>";
?>
U jednostavnim primerima kakve prikazujemo u uvodnom članku, koristićemo (ipak) prvi pristup, koji smatramo preglednijim za početno upoznavanje, a šablonskim niskama ćemo uskoro posvetiti detaljan članak.
Kontrolne strukture
U programskom jeziku PHP, naredbe grananja i petlje mogu se koristiti upravo onako kako smo navikli i u ostalim "C-olikim" programskim jezicima.
Grananja (if-else, switch)
Za primer if
grananja, uzećemo ugnježđeni if
koji proverava da li je uneta vrednost pozitivna, negativna, ili nula:
<?php
$a = 10;
if ($a > 0) {
echo "Uneta vrednost je pozitivna.";
}
else {
if ($a < 0) {
echo "Uneta vrednost je negativna.";
}
else {
echo "Uneta vrednost je nula.";
}
}
?>
Za switch
, primer će biti kod koji proverava da li uneta cifra pripada binarnom brojevnom sistemu:
<?php
$a = 10;
switch ($a) {
case 0: echo "Bit je isključen<br>"; break;
case 1: echo "Bit je uključen<br>"; break;
default: echo "Uneta vrednost nije binarna cifra"; break;
}
?>
(Sve funkcioniše na jednostavan i dobro poznat način.)
Petlje (while, do-while i for)
Osnovna while
petlja takođe se zapisuje na poznati način (a primer predstavlja ispis brojeva od 1 do 10 u zasebnim redovima):
<?php
$i = 1;
while ($i <= 10) {
echo $i . " <br>";
$i++;
}
?>
Tu je naravno i do-while
konstrukcija:
<?php
$i = 1;
do {
echo $i . " <br>";
$i++;
}
while ($i <= 10);
?>
.... a rezultujući ispis će biti isti kao i u prethodnom primeru.
Za kraj, prikazaćemo i for
petlju (ponovo: ne zaboravite znak $
ispred naziva svake promenljive):
<?php
for ($i = 1; $i <= 10; ++$i) {
echo $i . " <br>";
}
?>
(Ispis je isti kao i u prethodna dva slučaja.)
Funkcije u PHP-u
Veći i složeniji delovi koda koji se često ponavljaju, mogu se zapisati u obliku funkcija (baš kao i u ogromnoj većini drugih programskih jezika).
Prvo je potrebno definisati funkciju (na primer, definisaćemo funkciju koja vraća najveću od dve unete vrednosti):
<?php
function maks($a, $b) {
if ($a >= $b) {
return $a;
}
else {
return $b;
}
}
?>
.... posle čega se funkcija može i poz(i)vati:
<?php
// definicija iz prethodnog odeljka je u prikazu
// izostavljena zarad preglednosti
$prvi = 10;
$drugi = 12;
echo "Unete vrednosti su: " . $prvi . " i " . $drugi . "<br>";
echo "Najveća uneta vrednost: " . maks($prvi, $drugi) . "<br>";
?>
Pored toga što možemo definisati i koristiti sopstvene funkcije, možemo (naravno) koristiti i ugrađene funkcije.
Ugrađene funkcije
Pomenućemo u nastavku nekoliko najčešće korišćenih funkcija za rad sa brojevima i tekstom (dok ćemo se sa ostalima postepeno upoznavati u narednim člancima).
strlen - Provera dužine niske
Za proveru dužine niske, koristi se funkcija strlen
, pa tako (primera radi), ako pokrenemo sledeću skriptu ....
<?php
$s = "preraspodela";
$d = strlen($s);
echo "Dužina niske\"" . $s . "\" je" . $d . " znakova.<br>";
?>
.... dobićemo sledeći ispis:
Dužina niske "preraspodela" je 12 znakova.;
str_replace - Zamena dela niske
Za zamenu određenog tekstualnog obrasca drugom niskom, koristi se funkcija str_replace
, koja prima tri argumenta:
- tekstualni obrazac koji se traži unutar niske
- nisku koja sadrži tekst kojim će biti zamenjen prethodno navedeni tekstualni obrazac (ukoliko bude pronađen)
- nisku unutar koje se obavlja pretraga/zamena (niska može biti unapred zadata unutar navodnika, a može se predati i identifikator promenljive koja sadrži nisku)
Uzmimo kao primer sledeću skriptu ....
<?php
$s = "Danas nije baš lep dan.";
$s = str_replace("nije baš", "je", $s);
echo $s . "<br>";
?>
.... koja pri pokretanju proizvodi sledeći ispis:
Danas je lep dan.
Osvrnimo se i na to, da sledeći kod:
<?php
$s = "Danas nije baš lep dan.";
str_replace("nije baš", "je", $s);
?>
.... neće dovesti do izmene niske $s
, jer funkcija str_replace
ne vrši direktnu izmenu niske koja je predata kao 3. argument, već kreira i vraća novu nisku (koju je potrebno povezati sa određenom promenljivom zarad dalje obrade).
abs - Apsolutna vrednost broja
Funkcija abs
vraća apsolutnu vrednost unetog broja.
Pokretanje sledeće skripte ....
<?php
$a = -17.5;
echo "Uneti broj: " . $a . "<br>";
$a = abs($a);
echo "Apsolutna vrednost unetog broja: " . $a . "<br>";
?>
.... proizvodi sledeći ispis:
Uneti broj: -17.5
Apsolutna vrednost unetog broja: 17.5
rand - Generisanje nasumične brojčane vrednosti
Funkcija rand
generiše (pseudo)nasumične celobrojne vrednosti.
<?php
$a = rand();
echo "Nasumična vrednost: " . $a . "<br>";
?>
Kada pokrenemo gornju skriptu, dobićemo sledeći ispis (zapravo, bolje je reći da smo mi dobili takav ispis kada smo pisali članak i da šansa da ponovo dobijemo istovetnu vrednost - ni izdaleka nije velika):
Nasumična vrednost: 424747146
Ukoliko je potrebno ograničiti raspon mogućih vrednosti koje funkcija rand
vraća, navode se dva argumenta koji predstavljaju donju i gornju granicu:
<?php
$a = rand(1, 6);
echo "Nasumična vrednost (od 1 do 6): " . $a . "<br>";
?>
Ovoga puta dobijamo i drugačiji ispis:
Nasumična vrednost (od 1 do 6): 4
(Kao što ste verovatno pretpostavili, primer koji smo videli simulira bacanje kocke za igru.)
sqrt - Kvadratni koren broja
Funkcija sqrt
vraća kvadratni koren brojčane vrednosti koja se predaje kao argument.
U sledećem primeru ....
<?php
$a = 2;
$k = sqrt($a);
echo "Broj: " . $a . "<br>";
echo "Kvadratni koren: " . $k . "<br>";
?>
.... kreira se ispis koji se odnosi na kvadratni koren broja 2:
Zadata vrednost: 2
Kvadratni koren zadatog broja: 1.4142135623731
Upoznaćemo se ukratko i sa osnovnim principima korišćenja klasa i objekata (za primer ćemo uzeti vrlo jednostavnu klasu, ali, klasa će biti korektno zapisana i kompletirana).
Klase i objekti u PHP-u
Upotreba klasa i objekata u PHP-u, gotovo se nimalo ne razlikuje u odnosu na druge OOP jezike.
Za početak, potrebno je pripremiti klasu (za primer ćemo uzeti jednostavnu klasu koja sadrži podatke o osobama).
<?php
class Osoba
{
public $ime, $prezime, $adresa;
function __construct($ime, $prezime, $datum_rodjenja) {
$this->ime = $ime;
$this->prezime = $prezime;
$this->adresa = $adresa;
}
function formatiranje_podataka() {
return $ime . " " . $prezime . ", " . $adresa;
}
function ispis_podataka() {
echo formatiranje_podataka() . "<br>";
}
}
?>
Pošto je klasa Osoba
uredno definisana, mogu se kreirati objekti klase, i mogu se pozivati pripadajuće metode:
<?php
$osoba = new Osoba("Petar", "Petrović", "Topolska 18");
echo "Podaci o osobi:<br>";
$osoba->ispis_podataka();
?>
.... pri čemu dobijamo sledeći ispis:
Podaci o osobi:
Petar Petrović, Topolska 18
Budući da su polja klase (ime
, prezime
i adresa
) deklarisana kao javno dostupni elementi klase, prethodna skripta može se dopuniti na sledeći način:
<?php
$osoba = new Osoba("Petar", "Petrović", "Topolska 18");
echo "Podaci o osobi:<br>";
$osoba->ispis_podataka();
// Promena podataka:
echo "Novi podaci (izmenjena adresa):<br>";
$osoba->adresa = "Beogradska 24";
$osoba->ispis_podataka();
?>
Pri pokretanju skripte, ovoga puta dobijamo i opširniji ispis:
Podaci o osobi:
Petar Petrović, Topolska 18
Novi podaci (izmenjena adresa):
Petar Petrović, Beogradska 24
Kombinovanje PHP i HTML kodova
Pošto se polako približavamo kraju uvodnog izlaganja o PHP-u, osvrnućemo se na lepu i korisnu ideju (koju smo naveli na početku), koja se tiče toga kako se - unutar iste PHP datoteke - mogu kombinovati HTML i PHP.
Ideja se može shvatiti lako, preko jednostavnog primera.
Kreirajte datoteku sa ekstenzijom *.php
i unesite sledeći kod:
<!DOCTYPE html>
<html>
<head>
<title>HTML i PHP</title>
<meta charset='UTF-8'/>
<style>
.ispis {
font-size: 24pt;
font-weight: bold;
color: blue;
}
</style>
</head>
<body>
<?php
$r = rand();
if ($r % 2 == 0) {
$s = "<div class='ispis'>";
$s .= "Paran broj! :) (" . $r . ")";
$s .= "</div>";
echo $s;
}
else {
echo "Neparan broj! :( (" . $r . "<br>";
}
?>
</body>
</html>
Blok PHP koda (u gornjem primeru) nalazi se unutar HTML tagova, ali, to ni u kom slučaju ne ometa izvršavanje PHP koda.
Datoteka se interpretira na sledeći način:
- budući da je ekstenzija datoteke
*.php
, uključiće se PHP interpretator - delove datoteke koji nisu uokvireni php tagovima, interpretator će tretirati kao običan HTML
- kada se pojavi 'otvarajuća PHP zagrada':
<?php
, interpretator počinje da izvršava PHP kod (što, u našem primeru, za krajnji rezultat ima generisanje HTML koda) - kada se pojavi 'zatvarajuća PHP zagrada':
?>
, interpretator se vraća na tumačenje HTML-a
Prikazani pristup nudi veoma visok nivo fleksibilnosti (što ćemo još bolje moći da sagledamo u narednim člancima).
Pozivanje spoljnih skripti (include, require)
Kada su u pitanju "lepe i korisne" ideje, za sam kraj ćemo se osvrnuti i na funkcije koje omogućavaju korišćenje programskog koda iz postojećih datoteka, što (kako u PHP-u, tako i inače), predstavlja pristup koji programe/skripte čini znatno preglednijim.
U PHP-u se za uključivanje spoljnih datoteka mogu koristiti četiri različite funkcije: include
, include_once
, require
i require_once
.
Ukoliko se definiše skripta funkcije.php
, sa sledećim sadržajem:
<!-- funkcije.php -->
<?php
// sadržaj datoteke
// funkcije.php
// ----- početak -----
function da_li_je_deljivo($n1, $n2) {
return $n1 % $n2 == 0;
}
// ------ kraj -------
?>
.... u drugim skriptama može se pozivati komanda include
(ili neka od preostale tri funkcije koje smo prethodno naveli) ...
<!-- neka_druga_skripta.php -->
<?php
include("./funkcije.php");
$a = 12;
$b = 4;
if (da_li_je_deljivo($a, $b)) {
echo "Broj $a deljiv je brojem $b.<br>";
echo "$a / $b = $(a / b).<br>";
}
else {
echo "Broj $a nije deljiv brojem $b.<br>";
}
?>
.... što praktično proizvodi isti efekat kao da je sadržaj datoteke funkcije.php
'ručno' kopiran u drugu datoteku (bez PHP zagrada):
<!-- neka_druga_skripta.php -->
<?php
// sadržaj datoteke
// funkcije.php
// ----- početak -----
function da_li_je_deljivo($n1, $n2) {
return $n1 % $n2 == 0;
}
// ------ kraj -------
$a = 12;
$b = 4;
if (da_li_je_deljivo($a, $b)) {
echo "Broj $a deljiv je brojem $b.<br>";
echo "$a / $b = $(a / b).<br>";
}
else {
echo "Broj $a nije deljiv brojem $b.<br>";
}
?>
Kao što verovatno i sami pretpostavljate, u gornjem primeru se podrazumevalo da skripta funkcije.php
postoji (na navedenoj putanji).
Međutim - ukoliko skripta koju pozivamo ne postoji, a pri tom se u nastavku pozivamo na delove koda iz navedene skripte - doći će do greške u izvršavanju (glavne) skripte.
U situacijama (kao što je gornji primer), kada izvršavanje ostatka skripte zavisi od uspešnog učitavanja spoljne skripte, potrebno je koristiti funkciju require
, koja - u slučaju da je sve u redu sa učitavanjem - radi isto što i funkcija include
, ali - ukoliko dođe do greške - obustavlja dalje izvršavanje skripte.
Pošto smo na početku naveli četiri 'varijacije' funkcije za uvoz spoljne skripte - pri čemu u sva četiri slučaja postoji pokušaj kopiranja spoljne datoteke - osvrnućemo se na razlike, koje se (najprostije rečeno), mogu podeliti na: razlike između funkcija include
i require
, i razlike između verzija funkcija sa sufiksom ili bez sufiksa _once
.
Razliku između funkcija include
i require
smo se već objasnili (ali, napravićemo kratak osvrt i na ovom mestu, zarad preglednosti):
include
iinclude_once
- izvršavanje funkcije ne dovodi do obustavljanja izvršavanja ostatka skripte ukoliko dođe do greške pri kopiranju sadržaja spoljne skripterequire
irequire_once
- izvršavanje funkcije dovodi do obustavljanja izvršavanja ostatka skripte ukoliko dođe do greške pri kopiranju sadržaja spoljne skripte
Razlike između verzija sa sufiksom _once
i bez sufiksa, su sledeće:
include
,require
- spoljna skripta se kopira bezuslovnoinclude_once
,require_once
- pre pokušaja kopiranja, proverava se da li je spoljna datoteka već kopirana i, ako spoljna datoteka jeste kopirana - neće biti kopirana ponovo
Sledeći koraci ....
Kao što naslov članka sugeriše, u pitanju je (bio) opšti uvod u PHP, dok ćemo se tehnikalijama koje se tiču korišćenja PHP-a za pokretanje 'pozadinskih procesa' na web serverima, baviti u sledećim člancima.
Neke od tema biće:
- prosleđivanje podataka serveru preko HTML forme
- povezivanje sa MySql bazama podataka
- kreiranje formi za prijavu korisnika i registraciju korisničkih naloga
- validacija korisničkog unosa
- korišćenje nizova, klasa i objekata ....
U sledeća dva članka, bavićemo se (verovatno) najuobičajenijim zadacima u web programiranju: obradom podataka koji su prosleđeni preko URL-a, kao i prosleđivanjem podataka serveru preko HTML forme ....