internet - tfzr.uns.ac.rs skripta 2017.pdf · jsp –java server pages ... klijent (korisnik...
TRANSCRIPT
Radna skripta
-slajdovi sa predavanja -
Školska 2017/2018
1. Uvod u PHP
2. Promenljive, tipovi podataka
3. Operatori
4. Kontrola toka
5. Funkcije
6. Povezivanje sa bazama podataka – MySQL
7. On-line forme
8. Okviri za rad (frameworks)
1995 - PHP
(Personal Home
Page) jezik je
započeo Rasmus
Lerdorf za
potrebe lične
web strane 1995.
1999 - Zeev
Suraski i Andi
Gutmans su dalje
razvili PHP 3 (PHP
Hypertext
Preprocessor) i
Zend kompajler
kao osnovu za
PHP 4.
2004 - PHP 5
uključuje i
objektno
programiranje.
...PHP 6 ...
K
Kreiranje intraktivnih, dinamičkih
WEB strana na najlakši mogući
način.
Web strane se izvršavaju na
serverskoj strani.
Sličan C-u od koga je nastao .
PHP-om poručujemo serveru šta
želimo da se desi.
HTML i JavaScript se izvršavaju na
klijentskoj strani, odnosno na
korisničkom računaru
Nestruktuiran i nekonzistentan.
Platformski neutralan.
PHP može da memoriše podatke i
koristi ih u kasnijem trenutku.
Integrisanost sa (X)HTML-om.
Procenjuje se da na svetu ima
preko 15 miliona web strana
kreiranih u PHP-u
PHP
Implementira autentifikaciju i zaštitu komunikacije
Obrađuje podatke iz formulara
Povezuje korisnike sa bazama podataka na serveru
Omogućava dinamički HTML sadržaj
Vrši obrade na serveru, npr. prikuplja statistike o posećenosti
Alternative◦ Python
◦ Perl
◦ ASP – Active Server Pages
◦ JSP – Java Server Pages
LAMP – Linux Apache MySQL PHP (Python, Perl)
WAMP – Windows Apache MySQL PHP (Python, Perl)
Na tržištu više od 50% veb servera su tipa Apache
Najpopularniji programski jezik za dinamičko programiranje veb strana na serverima Apache je PHP
PHP je uopšte jedan od najpopularnijih programskih jezika
PHP koriste wikipedia.org, yahoo.com, facebook.com itd.
Crossplatform
Efikasan u
rešavanJu
problema
PHP datoteke
PHP datoteke su
mešavina PHP i HTML.
Ekstenzija datoteka je
.php
Za kreiranje datoteka
koriste se tekst
editori (SimpleText –
Macintosh ili Notepad
Windows).
Može se koristiti i
razvojno okruženje
za PHP (IDE) sa
prednostima kojih
nema kod tekst
editora (KOMODO,
MAGUMA, PHPedit,
Zend Studio)
Program koji se napiše u PHP-u ne zahteva prevođenje (kompajliranje), nego se interpretira pri svakom izvršavanju.
Uobičajen scenario po kom se izvršavaju PHP skripte je sledeći:
klijent (korisnik Interneta koji koristi neki internet pregledač) zahteva PHP stranicu sa servera
server prosleđuje zahtev servisu za veb (program veb-server na serveru)
veb-server prepoznaje da se traži PHP datoteka
ne šalje njegov sadržaj klijentu, nego ga izvršava kao program pomoću PHP modula
izlazni tekst programa (standardni izlaz) se šalje klijentu kao rezultat zahteva
klijent prepoznaje vrstu rezultata (HTML kod, slika, PDF sadržaj, arhiva itd.)
rezultat se prikazuje klijentu na odgovarajući način
PHP datoteka, nalik na većinu skriptnih jezika, jednostavno sadrži skup naredbi, koje se izvršavaju jedna za drugom, od prve do poslednje, gde se poslednja ujedno smatra i krajem PHP programa.
PHP datoteke mogu da sadrže sledeće vrste elemenata
HTML oznake
Oznake za PHP
PHP naredbe
beline
komentare
Komande se završavaju ;
Ključne reči (komande), imena funkcija i
klasa nisu osetljiva na veličinu slova (case
insensitive) .
PROMENLJIVA: $broj ≠$BROJ
Imena promenljivih jesu osetljiva na
veličinu slova (case sensitive).
Funkcije: sort = SORT
PHP
osnovni
elementi
Komen-
tari
Prikaz
Promen-
ljive
OperatoriFunkcije
Objekti
Tag
Ideja pravljenja programa je da on ne funkcioniše samo za jedan jedini slučaj, već da bude primenljiv za različite vrednosti.
Program je praktično kao "formula" koja se primenjuje na različitim vrednostima.
Promenljiva predstavlja memorijsku lokaciju koja sadrži neku vrednost.
Tokom izvršavanja programa ova vrednost se može menjati, pa odatle i naziv "promenljiva".
Promenljivaje "kutija" u kojoj se nalazi "nešto".
Ta "kutija" mora imatiime preko koga onda pristupamo vrednosti tepromenljive. Umesto da u programu pišemo:
3+4
Pišemo
x+y
Promnljive imaju dve veoma značajne uloge u programiranju:
u promenljivama se smeštaju ulazni parametri -npr. početne vrednosti sa kojima radi našprogram
u promenljivama se drže međurezultati, kao ifinalni rezultati rada programa
Kao što im ime kaže, promenljive tokomizvršavanja programa mogu menjati vrednost. Zavisnood programskog jezika, takođe mogu (ili ne mogu) menjati i tip vrednosti.
Proces rešavanja problema treba definisati kroz nekoliko koraka.
Najvažniji koraci su :
Formulacija problema,
dizajniranje programa,
programiranje,
izrada test primera,
testiranje problema,
dobijanje i analiza rezultata.
Šta je zadatak koji treba da rešimo?
Definisanje ciljeva i korisnika
Definisanje željenog izlaza
Definisanje potrebnog i dostupnog ulaza
Definisanje načina obrade ulaza
Provera tačnosti i održivosti – testiranje na primeru
Među najvažnije osobine rešenja problema - algoritama spadaju:
Diskretnost :svakom koraku možemo pridružiti diskretan vremenski period u kome se taj korak izvršava.
Determinisanost:svaki korak sadrži ulazne veličine, na osnovu kojih se jednoznačno dobijaju izlazne veličine.
Elementarnost: zakon dobijanja izlaznih veličina mora biti jasan i prost.
Rezultativnost: svakom skupu ulaznih veličina mora biti definisano šta je rezultat.
Masovnost: algoritam treba tako napraviti da važi za najširi skup ulaznih podataka.
Svaki programski jezik ima određena pravila zazadavanje imena promenljivih. Neka opšta pravila, sa kojima (gotovo) sigurno nećemo pogrešiti su:
naziv promenljive se sastoji iz slova engleskeabecede i cifara
naziv mora počinjati slovom
Sadrže vrednosti koje program smešta u okviru memorije računara
Promenljivoj se dodeljuje:
◦ željeno ime
◦ vrednost
Tip promenljive ne mora da se specificira, određuje ga vrednost promenljive
Sve promenljive počinju sa $
Drugi znak je slovo ili _
Oblast važenja je prilično važna tema kada se govori o promenljivama. Suštinski, promenljive mogu imati ali i nemati vrednost ("važe" iline "važe") u celom programu.
Najčešće se oblast važenja vezuje za potprograme. Konkretno, postoje globalne promenljive kojevaže uvek i svuda, ali ilokalne koje važe samo u određenom delu programa - funkciji ili procedure
Postojanje lokalnih promenljivih je dobra stvar. Zahvaljujući njima, funkcija može biti nezavisna od ostataka programa, a možemo lako da pravimoi rekurzivne potprograme
Skalarni◦ boolean – logički tip◦ integer – celobrojni tip◦ float – racionalni tip◦ string – znakovni niz
Složeni◦ array - niz◦ object - objekat
Specijalni◦ resource - resurs◦ Null - ništa
Logički tip uzima vrednosti TRUE ili FALSE Celobrojni tip može biti decimalni, oktalni
(počinje sa 0) ili heksadecimalni (počinje sa 0x). Max vrednost zavisi od sistema a može da se odredi konstantnom PHP_INT_MAX
Racionalni tip ima razne oblike, npr.<?php
$a = 1.234; $b = 1.2e3; $c = 7E-10;?>
Mogu biti pod apostrofima (‘ab’) ili navodnicima (“ab”) Kada se koriste apostrofi navodnici se koriste za navodnike u tekstu i
obrnuto. Apostrof unutar apostrofa \’, slično za navodnike. Za duži tekst pod navodnicima, može se koristiti <<< sa nekom
promenljivom koja razgraničava tekst (nema razmaka posle EOT):$s=<<<EOTTextEOT; Za duži tekst pod apostrofima$s=<<<‘EOD’TextEOD; Primer:echo <<<EOTPrimer “dužeg” znakovnog niza koji može zauzimati i “veliki broj
redova” i ‘puno’ navodnika itd.EOT;
Primer:<?php $foo = "foobar";$a=2; echo ‘foo je $foo <br />’;echo “foo je $foo <br />”;Echo ‘a je $a <br />’;Echo “a je $a <br />”; ?> Rezultat:foo je $foo foo je foobara je $a a je 2
Sintaksa definisanja nizaImeNiza=array([indeks1=>]vrednost1, …) Indeksi mogu biti celi brojevi ili stringovi. Indeksi koji nisu
specificirani uzimaju vrednosti redom 0,1,2,... Primer<?php $niz=array("Aleks" => "9", "Sanja" =>8 , "Mirko" =>6);echo $niz['Aleks'], "<br />";echo “{$niz['Aleks']} <br />";echo $niz["Sanja"];?> Rezultat:998
Primer:
$familije=array
(“Popov”=>
array(“Branka”,”Dejan”),
”Popović”=>
array(“Mira”,”Maja”,”Radivoj”));
Objekti su slični kao kod JavaScript-a, ali se sintaksa razlikuje
Objekti se definišu klasama kojima pripadaju Klase imaju definisane atribute i metode Promenljive objekti se dobijaju instanciranjem
klase
Promenljive tipa resurs su pokazivači na složene eksterne promenljive
Primer su pokazivač na otvoren fajl ili na vezu sa bazom podataka
Promenljive tipa resurs se generišu različitim funkcijama u zavisnosti od primene
Kompajler automatski briše promenljive tipa resurs koje ne pokazuju na neki resurs
Aritmeticki operatori Operatori dodele Operatori poredjenja Increment/decrement operatori Logicki operatori String operatori Operatori nad nizovima
Operator Ime Primer Rezultat
+ Sabiranje $x + $y Suma $x I $y
- Oduzimanje $x - $y Razlika $x I $y
* Mnozenje $x * $y Proizvod $x I $y
/ Deljenje $x / $y Kolicnik $x I $y
% Moduo $x % $y Ostatak od $x pri
deljenju sa $y
** Eksponent $x ** $y Rezultat podizanja $x
na $y – ti stepen
Primer sabiranja
Primer moduo
$a = 1 + 1;$b = $a * 3;$c = $b / 4;$d = $b – $a;$e = -$d;$f = ($g = 4) + 5; echo “a, b, c, d, e, f, g su” , “ ”,$a, “ ” ,$b, “ ”,$c, “ ”,$d, “ ”,$e, “ ”, $f, “ ”,$g; Nakon izvršavanja prethodnog primera dobija se
sledeći tekst na ekranu:a, b, c, d, e, su 2 6 1.5 4 -4 9 4
PHP operatori dodele se koriste sa numeričkim vrednostima da bi se numericka vrednost dodelila promenljivoj. Osnovni operator dodele u PHP – u je “=”, koji se koristi da bi se levi operand postavio na vrednost izraza na desnoj strani operanda.
Dodela Isto kao Opis
x = y x = y Levom operand se
dodeljuje vrednost desnog
operanda
x += y x = x + y Sabiranje
x -= y x = x - y Oduzimanje
x *= y x = x * y Mnozenje
x /= y x = x / y Deljenje
x %= y x = x % y Moduo
Primer dodele sa oduzimanjem
Primer dodele sa deljenjem
PHP operatori poredjenja se koriste da uporede dve vrednosti (brojeve ili stringove)
Operator Ime Primer Rezultat
== Jednako $x == $y Vraca true ako je x jednako sa y
=== Identicno $x === $y Vraca true ako je x jednako sa y I istog su
tipa
!= Nije jednako $x != $y Vraca true ako x nije jednako sa y
<> Nije jednako $x <> $y Vraca true ako x nije jednako sa y
!== Nije identicno $x !== $y Vraca true ako x nije jednako sa y ili nisu
istog tipa
> Vece od $x > $y Vraca true ako je x vece od y
< Manje od $x < $y Vraca true ako je x manje od y
>= Vece od ili jednako $x >= $y Vraca true ako je x vece od ili jednako sa
y
<= Manje od ili jednako $x <= $y Vraca true ako je x manje od ili jednako
sa y
Primer jednako
Primer identično
Inkrement I decrement operatori se koriste da uvećaju ili umanje vrednost promenljive.
Operator Ime opis
++$x Pre-inkrement Povecava x za 1, zatim
vraca x
$x++ Pos-tinkrement Vraca x, zatim ga
uvecava za 1
--$x Pre-dekrement Umanjuje x za 1, zatim
vraca x
$x-- Post-dekrement Vraca x, zatim umanjuje
x za 1
Primer preinkrement
Primer postinkrement
PHP logički operatori se koriste da kombinuju uslovne iskaze
Operator Ime Primer Rezultat
and konjukcija $x and $y true ako su I x I y true
or disjunkcija $x or $y true ako je bar 1 od x
ili y true
xor eksili $x xor $y true ako je jedan od x
ili y true, ali ne I ako
su oba true ili false
&& konjukcija $x && $y true ako su I x I y true
|| disjunkcija $x || $y true ako je bar 1 od x
ili y true
! negacija !$x true ako x nije true
Primer and, xor
PHP ima dva operatora koji su specijalno dizajnirani za rad sa stringovima.
operator ime primer rezultat
. konkatenacija $txt1 . $txt2 konkatenacija txt1
I txt2
.= konkatenacija sa
dodelom
$txt1 .= $txt2 dodaje txt2 na txt1
Primer konktenacija
Primer konktenacija sa dodelom
operator ime primer rezultat
+ unija $x + $y unija nizova x I y
== jednakost $x == $y vraca true ako x I y
imaju iste
kljuc/vrednost parove
=== identicnost $x === $y vraca true ako x I y
imaju iste
kljuc/vrednost parove
isto poredjane I istog
tipa
!= nejednakost $x != $y vraca true ako niz x
nije jednak sa nizom y
<> nejednakost $x <> $y vraca true ako niz x
nije jednak sa nizom y
!== neidenticnost $x !== $y vraca true ako niz x
nije identican sa
nizom y
Primer jednakost
Primer unija
Vrste podataka◦ varijable
◦ tipovi varijabli
◦ konstante
Izrazi i operatori
Petlje i uslovi◦ FOR, WHILE i ostale
petlje
◦ IF i SWITCH uslovi
Funkcije
Definisanje funkcije
Pozivanje funkcija
Vidljivost varijabli
Polja (skupovi vrednosti)
Inicijalizacija polja
Imenovana polja
Podaci u polju
Osnovne funkcije nad poljima
Svaki PHP skript je satkan od serije naredbi, koje mogu biti razna dodeljivanja, pozivi funkcija, petlje, uslovna grananja, pa čak i naredbe koje ništa ne rade (tzv. prazne naredbe).
Svaka od instrukcija završava, po pravilu, tačka-zarezom (;). Pored toga, određeni broj naredbi može da gradi „grupu naredbi“ koje su same po sebi poseban izraz.
Jedan od ovih grupnih izraza je grananje. Uslovna grananja ili kontrola toka programa predstavlja jedno od najvažnijih programskih struktura svakog jezika, među njima je i PHP.
Uslov predstavlja izraz sa određenom istinosnom vrednošću, koja može biti TRUE ili FALSE.
Ukoliko je vrednost uslova TRUE, PHP će izvršiti naredbe koje se nalaze u delu „izrazi“, a ako je ta vrednost FALSE – programski kod unutar ove strukture će se ignorisati.
Razgranate strukture služe dana osnovu nekog uslova odredimo koji deo programa će se izvršiti a koji ne. Ove strukture moramo koristiti u programu pošto skoro nikada ne možemo unapred sa sigurnošću znati sa k
Kontrolne strukture su jezički konstrukti kojisluže da kontrolišemo izvršavanja programa. To su suštinski naredbe koje služe da u programu realizujemo različite tipove algoritama, tj. da stvorimo razgranate i ciklične strukture.
U PHP-u imamo sedeće vrste uslovnih kodova
if statement - izvršava kod samo ako je neki uslov ispunjen tj. true
if...else statement - izvršava deo koda ako je uslov tačan ili drugideo ako nije tačan
if...elseif....else statement - ako prvi uslov nije tačan, proverava se drugi a za tim se izvršava treći ako nije nijedan izvršen
switch statement - odabira se jedan od više blokova koda zaizvršavanje
<?php
if ($uslov) {
// Blok koji se izvršava
// ako je $uslov ispunjen
} else if ($uslov2) {
// Blok koji se izvršava
// ako $uslov nije ispunjen, a $uslov2 jeste
} else if ($uslov3) {
// Blok koji se izvršava
// ako nisu ispunjeni $uslov i $uslov2,
// a $uslov3 jeste
} else {
// Blok koji se izvršava ako
// $uslov ni $uslov2 ni $uslov 3
// nisu ispunjeni
}
?>
Uslovi :: if...else
Primer ispod će ispisati "Have a good morning!" ako je manje od 10 sati, i "Have a good day!" ako je manje od 20 sati. Ako se ne zadovolje prva dva uslova ispisat će se "Have a good night!":
t = date("H");
if ($t < "10")
{ echo "Have a good morning!"; }
elseif ($t < "20") { echo "Have a good day!"; }
else { echo "Have a good night!"; }
<?php
$slucaj = "da";
switch ($ slucaj) {
case "da": // $ lucaj == "da"
echo "DA! To je to!";
break;
case "ne": // $ slucaj == "ne"
echo "NE, to nije to!";
break;
case "mozda": // $ slucaj == "mozda"
echo "MOŽDA je a možda i nije";
break;
default: // nijedno od navedenog
echo "NIJEDNO";
break;
}
?>
Uslov:: switch-case
Sintaksa
switch (n) {case label1:
code to be executed if n=label1;break;
case label2:code to be executed if n=label2;break;
case label3:code to be executed if n=label3;break;
...default:
code to be executed if n is different from all labels;}
Primer: switch($mesec) {
case 1: $ime_meseca = “Januar”; break;case 3: $ime_meseca = “ Mart”; break;case 5: $ime_meseca = “Maj”; break;case 7: $ime_meseca = “Jul”; break;case 8: $ime_meseca = “Avgust”; break;case 10: $ime_meseca = “Oktobar”; break;case 12: $ime_meseca = “Decembar”; break;case 4: $ime_meseca = “ April ”; break;case 6: $ime_meseca = “Jun”; break;case 9: $ime_meseca = “Septembar”; break;case 11: $ime_meseca = “Novembar”; break;case 2: $ime_meseca = “ Februar ”;
}
Petlje manjuju količinu koda potrebnog da se ispiše neki kod
Neke od petlji:
◦ WHILE
◦ DO...WHILE
◦ FOR
◦ FOREACH
Radsa podacimo obično moramo da "serijalizujemo", odn
osno da radimo sa celim nizom
podataka. U ovom slučaju potrebni su nam ciklične
strukture, odnosno način da ponavljamo izvršavanje
dela programa sve dok postoji potreba.
<?php
$i = 1;
while ($i <= 10) {
echo $i , "<br/>";
$i++;
}
?>
Petlje :: while
<?php
$i = 0;
do {
echo $i, "<br/>";
} while ($i > 0);
?>
Petlje :: do - while
<?php
for ($i = 1; $i <= 10; $i++) {
echo $i, "<br/>";
}
?>
Petlje :: for
Izlaz iz petlje – nasilni prekid ciklusa I pre ostvarivanja uslova petlje može se izaći iz nje
iskazom BREAK. Kada se u petlji naidje na iskazBREAK onda se prekida sve u petlji i nastavlja se od dela koda koji je posle petlje. Iskaz CONTINUE se koristi ako želimo momentalno krenuti na sledećuiteraciju petlje. Iskaz EXIT se koristi kada se želiprekinuti izvršenje čitave skripte.
while (uslov) {
...naredbe
If (uslov) {
break;
}
...naredbe
}
...naredbe posle ciklusa na koje se prelazi ako se izvrši break
Ciklus foreach ima specifičnu primenu -za prolazak kroz asocijativne
nizove. To je praktično jedini način da "dohvatimo" svaki element asocijativnog niza, pošto oni nisu"nabrojani", kao kod klasičnih
numerisanih nizova, već pre predstavljaju
strukturu parova ključ-vrednost.
U svakoj iteraciji ciklusa, zadata promenljiva dobija vrednost jednog elementa.
Funkcija nije ništa drugo nego naziv koji dajemo određenombloku koda, s namerom da ga upotrijebimo više puta.
Funkcije omogućavaju izvršavanje određenog bloka naredbi, kojese ponavljaju. PHP ima dosta već ugrađenih, ali postojimogućnost definisinja sopstvenih funkcija. Funkcija može da se pozove iz nekog drugog dela skripte, prosleđujući jojargumenate, a ona zatim, kada se izvrši, može da vrati nekuvrednost. Razlozi zbog kojeg se koriste funkcije mogu biti:
izbegavanje ponovnog pisanja već napisanog dela koda lakše razumevanje koda Svaka funkcija je identifikovana svojim imenom, može imati odre
đeneparametre I ima svoje lokalne promenljive. Funkcija
se može pozivati iz glavnog programa, iz druge funkcije, pa čaki rekurzivno iz same sebe.
Funkcije mogu (i ne moraju) vraćati vrednost.
Funkcija se deklariše ključnom rečju function posle koje se navodinaziv funkcije i lista formalnih parametara u zagradi. U parametrima se navodi niz promenljivih, međusobno razdvojenih
zapetom. Funkcija može imati jedan ili više parametara. Postoje slučajevikada neće biti potreban ni jedan parametar. Međutim čak i u tada jeobavezno pisanje običnih zagrada prilikom deklarisanja funkcije.
"Telo" funkcije (njene naredbe) se navodi unutar vitičastih zagrada.
function naziv(lista formalnih parametara) {
naredbe}
Funkcija se poziva po svom imenu, a u zagradi se navodi lista stavarnih parametara (realnih vrednosti koje seprosleđuju funkciji).naziv(lista stvarnih parametara);
Funkcija može vratiti neku vrednost kao rezultat. Za ovo se koristi direktiva return,
iza koje se navodi vrednost koja se vraća. Ova naredba istovremeno znači i prekid rada ("iskaka
nje") funkcije.
function naziv(parametri) {
naredbe... return $rezultat;
}To znači da funkcije ne moraju da se pozivaju samo kao zasebne naredbe, već mogu učestvovati i u izrazima
Parametri se dele na formalne i stvarne. Formalni parametri se navode u deklaraciji funkcije
i predstavljaju listu promenljivih koje primaju vrednosti stvarnihparametara koji se navode pri pozivu funkcije.
function fun($a, $b, $c) {} fun(123, $x+25, ff($c)) Formalni parametri se smatraju lokalnim promenljivama, koje imaju vred
nostunutar funkcije. U PHP-u se parametri prenose po vrednosti, što znači da se vrednost stvarnih parametara kopira u promenljive koje su navedenekao formalni parametri. Šta god mi radili sa parametrima unutar funkcije, to neće uticati na originalnevrednosti.
Ono što je bitno je da stvarni parametri imaju neku vrednost u trenutkupozivanja. Da li će to da bude konstanta, promenljiva, izraz, poziv funkcije -nije bitno, pošto se vrednosti računaju pre poziva.
Formalni i stvarni parametri moraju poklopiti po:
1. broju (koliko zadamo jednih, moramo imati i drugih),
2. tipu (tamo gde se očekuje broj ne možemo proslediti tekst) i
3.značenju (ako se očekuju brojevi koji označavaju mesec i dan, ne
možemo zadati dan i mesec).
Uobičajeno nije moguće da funkcija može da izmeni vrednoststvarnih parametara, ali ako je potrebno da se to desi, postojinačin da se parametri prenesu poreferenci, umesto po vrednosti.
Tada bi formalni parametri bili samo "pokazivači" ka stvarnimparametrima, i šta god da funkcija uradi sa takvim parametrom,
"preneće" se na stvarni paramatar. Da bi funkcija "znala" koji parametri se prenose po referenci,
ispred njih se u deklaraciji funkcije navodi znak &(ampersend). Da bi ovo funkcionisalo, stvarni parametri koji se prenose po
referenci moraju biti promenljive. Pored korišćenja naredbe return, menjanje vrednosti parametara
je još jedan način da funkcija vrati vrednost u glavni program.
http://www.webnstudy.com/tema.php?id=php-korisnicke-funkcije
Još jedan način da se funkcija "ubaci" vrednost u neku promenljivuiz glavnog programa, bi bio direktan pristup globalnim promenljivama.
Pošto funkcija radi samo sa sopstvenim lokalnim promenljivama, da bismo iz funkcije koristili neku promenljivu iz glavnog programa, tu promenljivu moramo da deklarišemo u funkciji kao globalnu, korišćenjem directive global.
Korišćenjem globalnih promenljivih smanjujemo potrebu za korišćenjem parametara.
Funkcije mogu imati i varijabilan broj parametara, kada se parametri, bez obzira koliko ih je, smeštaju u niz kome preistupamo unutr funkcije. Da bi se parametar "proglasio" za listu, koristi se specijalan token ... (tri tačke).
http://www.webnstudy.com/tema.php?id=php-korisnicke-funkcije
Da bi se funkcija izvršila, nije dovoljno da samo bude deklarisana. Da bi se iskoristila ona mora da bude pozvana.
Nije neophodno, ali se preporučuje, da pre pozivanja, funkcija bude većdeklarisana. Prilikom pozivanja funkcije, navodi se lista argumenata.
Redosled argumenata, koji se navode u pozivu, treba da odgovararedosledu parametara u deklaraciji funkcije. Kao argumenti, mogu se navesti promenljive, određene vrednosti ili izrazi. Brojne vrednosti se mogu proslediti sa ili bez navodnika. Nije neophodno da broj elemenataiz lista argumenata bude jednak broju elemenata iz liste parametara. Ako je broj argumenata manji i nemaju unapred dodeljenu vrednostnedostajućim promenljivama se dodeljuje vrednost null (mada dolazi do greške, ona se neće zaustaviti izvršavanje funkcije). Ako funkcija vraćaneku vrednost, ona se u pozivu može dodeliti nekoj promenljivoj iliupotrebiti u nekom izrazu.
Kada se izvršavanje funkcije završi, tok programa se nastavlja, tačno od mesta odakle je pozvana. Izvršavanje može da se prekine pošto se prođekroz celu funkciju ili se tok izvršavanja može prekinuti u bilo kom delubloka, upotrebom jedne ili više naredbi za povratak (engl. return).
<?php
// definisanje funkcije
function naslov($tekst = "Moj naslov") {
// telo funkcije
echo "<h1>" . $tekst . "</h1>";
}
// pozivanje (pokretanje) funkcije
naslov();
naslov("Moj novi naslov");
naslov("Moj drugi naslov");
?>
Funkcije :: Definisanje i pozivanje
Sve promenljive koje se koriste u okviru funkcija, osim onih koje se nalaze u listi parametara prosleđene po adresi, dobijaju početne vrednosti prilikom svakog pozivanja funkcije.
Te promeljnive su lokalnog karaktera, njihove vrednosti se dodeljuju i raspoložive su isključivo u okviru iste funkcije. Važi i obrnuto, promenljive definisane van funkcije, nisu raspoložive unutar funkcije, čak ni onda kada se van i u okviru funkcije koriste istoimene promenljive.
<?php
// polje sa numeričkim vrednostima
$posta = array(
23000, 21000, 33000, 13000
);
// polje sa znakovnim nizovima
$grad = array(
"Zrenjanin", „Novi Sad", „Kragujevac", „Pancevo"
);
// ispis vrednosti polja
for ($i=0; $i<4; $i++) {
echo $posta[$i] . "-" . $grad[$i] . "<br/>";
}
?>
Polja :: Priprema i korištenje
<?php
$gradovi = array(
„Zrenjanin" => 23000,
„Novi Sad" => 21000,
„Pancevo" => 13000
);
$gradovi[„Beograd"] = 11000;
echo $gradovi[„Zrenjanin"] . "<br/>";
echo $gradovi[„Beograd"] . "<br/>";
?>
Polja :: Imenovana polja
U objektno orijentisanom programiranju, za smeštanje određene grupe funkcija i promenljivih koriste se klase.
Da bi bile dostupnije u bilo kom delu istog programa ili u nekim drugim programima, klase se najčešće ispisuju u posebnim spoljašnjim datotekama.
Klase same za sebe ne sadrže podatke. Na osnovu klasa kreiraju se objekti. Klase su modeli, apstraktne predstave objekata sa zajedničim osobinama i ponašanjam
Prilikom izbora imena klasa važe ista pravila, kao i za imenafunkcija i promenljivih. Osim toga, interpretator ne pravirazliku između malih i velikih slova, ali je običaj da u imenima klasa početak reči bude veliko slovo, a da ostalaslova budu mala, kako bi se razlikovale od ostalihidentifikatora. Svojstva, odnosno atributi ( attributes), osobine ilikarakteristike su skup promenljivih, od kojih neke mogu da imaju početnu vrednost. Vrednost se definiše prekojednostavnih izraza, koji ne mogu da sadrže drugepromenljive, niti funkcije.Akcije ili ponašanje klase definiše se preko metoda, kojezapravo imaju ulogu funkcija u strukturnom programiranju, s tom razlikom da je dozvoljeno da metoda neke druge klase ilispoljašnja korisnička funkcija nose isto ime.
Gledajući definiciju klase, lako se možezaključiti da su to zapravo kolekcijepromenljivih i funkcija, preko kojih se definišunjena svojstva i ponašanje. Kako svojstva, tako imetode mogu imati različitu vidljivost u odnosuna svoje okruženje. Ovo se deklariše prekoključnih reči:
public — atributi i metode su javni, odnosnopotpuno su dostupni van postojeće klase
private — atributi i metode su dostupnijedino unutar klase
protected — atributi i metode su dostupniunutar same klase ili unutar klasa izvedenih
MySQL je najpopularnij database sistem koji se koristu u PHP-u.
Šta je MySQL?
MySQL je database sistem koji se koristi na web-u
MySQL je database sistem koji radi na serveru
MySQL je idealan za male I velike aplikacije
MySQL je veoma brz ,pouzdan I lako se koristi
MySQL koristi standard SQL
MySQL se kompajluje na više platforma
MySQL se može besplatno koristiti I preuzeti
MySQL je osnovan, distribuiran, and održavan od strane Oracle Corporation
MySQL je jedan od sistema za upravljanje relacionimbazama podataka. Ovaj program se ponaša kaoserver, sa muilti-user funkcijom, odnosno dozvoljavapristup više korisnika.
MySQL je višekorisnički sistem za upravljanje bazama podataka. Prva verzija ovog sistema se pojavila 1995. godine i ovo je trenutno najpopularniji sistem za upravljanje bazama podataka.
MySQL skraćenica od (eng. Standard Query Language) je strukturni jezik za upite koji se upućuju bazi podataka.
Napisan je programskim jezicima C i C++ i takođe je podržan na većini danas popularnih operativnih sistema.
Svaka MySQL baza može imati nekoliko korisnikakoji joj mogu pristupiti, a svaki korisnik imapredefinisane mogućnosti za rad, odnosnoovlašćenja.
Ovakav pristup uz dobra podešenja, znatnoumanjuje mogućnost greške.
MySQL kao sistem može raditi na mnogorazličitih operativnih sistema, a najčešće se koristi na Apache webserverima u kombinaciji saPHP. Informacije u MySQL bazi podataka se sortiraju u tabelama.
Tabele se sastoje od redova I kolona.
Baza se kreira uz pomoć ključne reči CREATE:
;
Za pristup bazi koristimo naredbu USE:
Da bi kreirali tabelu koristimo sledeći model:
U našem primeru to bi izgledalo ovako:
Prva linija je krajnje jednostavna, u njoj obaveštavamo MySQL da želimo da kreiramotabelu STUDENT. U drugoj liniji želimo da napravimo kolonu koju ćemo nazvati ID kojaće sadržati podatke tipa integer (int). Ova linija sadrži i neke specifičnosti vezane zaprvu kolonu: Prvo, kolona ne sme biti prazna (NOT NULL). Zatim, automatski se dodeljuje vrednost svake sledeće vrste prilikom unosa (AUTO_INCREMENT). I konačno, pošto će sve vrednosti sigurno biti različite to nam omogućava da datu kolonuoznačimo kao primarni ključ (PRIMARY KEY). Treća linija je takođe veoma jednostavna, žalimo da napravimo kolonu StudentIme koja će sadržati podatak tekstualnog karaktera (tipa TEXT) odnosno ime studentaČetvrta kolona StudentDatumRodjenja će sadržati tip podataka (DATE) i ona takođenikada ne sme biti prazna, zato i za nju stavljamo NOT NULL.
Pošto smo kreirali bazu i u njoj tabelu, sadapreostaje da u tabelu unesemo neki sadržaj.
Ključna reč za unošenje sadržaja u tabelu jeINSERT. Jedan od načina na koja možemoizvršiti upisivanje u tabelu:
Nije potreban specijalan program da bi se ostvarila veza sa MySQL bazom, već je u sam PHP jezik je ugrađena podrška za povezivanje sa MySQL bazom.
PHP funkcija kojauspostavlja vezu sa bazom je:
Address - predstavlja IP ili hostname kompjutera na kome se nalazi MySQL sa kojimželimo da uspostavimo vezu ("localhost", ako se pokreće na istom kompjuteru)
Username - MySQL username, ako je hostname localhost, onda će username biti root
Password – lozinka za logovanje
Funkcija mysql_connect, vraća broj kao potrvdu da je uspostavljena veza. Ako jenamera uspostavljanje „običnе“ vezе, ta vrednost se prihvata
Sledeći korak je uspostavljanje veze sa bazomsa kojom želimo da radimo. Pošto je većkreirana, sada ćemo samo nastaviti rad sanašom bazom Student.
Izbor baze u PHP je uz pomoć sledećekonstrukcije :
Promenljiva $dbcnx koja sadrži identifikator o povezanosti sa bazom da kaže funkciji koju bazu da upotrebi sa konekcijom (opcioni parametar)
Funkcija će automatski uzeti link identifikator za poslednju ostvarenu vezu. Funkcija vraća tačno, kada je uspešno i netačno kada se javi greška.
Nakon uspostavljene veze sa izabranombazom, pristupa se korišćenju podatakasačuvanih u bazi pomoću mysql_queryfunkcije:
<query>niz koji sadrži SQL komande koje će se izvršiti.
Identifikator konekcije je opcion.
Za većinu SQL upita, funkcija mysql_query vraćauglavnom tačno (uspešno) i netačno (neuspešno).
Za SELECT to nije dovoljno. Pozivamo SELECT funkciju da bi videli podatke sačuvane u bazi.
U dodatku indikatora, da li je je upit uspešan ilineuspešan, PHP takođe mora da primi rezultatupita.
Kao rezultat poziva SELECT, mysql_query vraćabroj identifikator "podešenosti rezultata", dobijase lista redova (sadržaj baze). Greška se ne vraća, ako je upit loš iz bilo kog razloga.
Sadržaj rezultata biće tekst sa svim imenima studenata, sačuvanim u tabeli Student.
„
Ako želimo da omogućimo posetiocima našeg sajta da upišu studenta u bazu, neophodno je da obezbedimo formu.
„
Za ubacivanje vica u bazu, koristimo samomysql_query da bi pokrenuli INSERT upit, koristimopromenljivu $studentime da bi poslali vrednost
„
„
• Forme na veb stranicama koristimo kako bismo ostvarili neku interakciju sa korisnikom
• Forme mogu služiti za, recimo, prikupljanje podataka o korisniku
• Jedna velika prednost PHP-a je što može da koristi HTML forme
• PHP koristimo kako bismo informacije prosledili na istu ili neku drugu stranicu
• Formu kreiramo u zagradama <form></form>
• Podržava Global (class, data, id, title...) i Event (onerror, onload, onclick...) atribute
• Elementi forme: <input>, <select>, <textarea>, <button>, <datalist>, <keygen>, <output>
• Svaki element može sadržati atribute (npr. maxlength, size, required...)
• Najvažniji element je <input>
• Tipovi: text, password, submit, radio, checkbox, button, reset, date, range, search, email, url, week, tel...
<form method="GET" action="">Ime:<br /><input type="text" name="ime"><br /><input type="submit" name="submit"
value="Potvrdi"></form>
<html><hr /><br />Popuni polja:<br /><form method="POST" action="">
<input type="text" name="ime" ><br /><input type="password" name="psw"><br /><input type="radio" name="pol" value="musko" checked> Muško<br
/><input type="radio" name="pol" value="zensko"> Žensko<br /><input type="radio" name="pol" value="neodredjen"> Neodređen<br
/><input type="checkbox" name="vozilo" value="bajs"> Bajs<br /><input type="checkbox" name="vozilo" value="kola"> Kola <br /><input type="submit" name="submit" value="Potvrdi"><input type="reset">
</form></html>
• Atributi nam služe da, recimo, ograničimo unos podataka ili dodamo neke posebne informacije, itd.
• Npr.: disabled, maxlength, placeholder, required...
<form>Ime:<br><input type="text" name="ime" maxlength="3"></form>
„Disabled“ atribut zaključava polje tako da postaje neaktivno
<form>Ime:<br><input type="text" name="ime" maxlength="3"disabled></form>
„readonly“ atribut zaključava polje tako da korisnik ne može da ga menja
<form>Ime:<br><input type="text" name="ime" placeholder="Nekoime" readonly></form>
Dozviljava ili sprečava automatsko popunjavanje polja
<form>Ime:<br><input type="text" name="ime" placeholder="Nekoime" autocomplete="off"></form>
Postavlja kursora u to polje pri učitavanju stranice
<form>Ime:<br><input type="text" name="ime" autofocus></form>
• autocomplete
• autofocus
• form
• formaction
• formenctype
• formmethod
• formnovalidate
• formtarget• height and width• list• min and max• multiple• pattern (regexp)• placeholder• required• step
Forma može sadržati dodatne atribute kao što su
• Action
• Method
• Target
• Name
• i druge.
<form method="GET" action=""></form>
Recimo, „Method“ atribut za određivanje metode slanja informacija kroz PHP
<form method="POST" action=""></form>
<form method="" action=""></form>
Prosleđuje informacije na neki link/fajl
<form method="" action="stranica.php"></form>
Ne prosleđuje na drugu stranicu
Prosleđuje na stranicu stranica.php
Vrednosti iz formi možemo proslediti putem GET i POST metoda
Obe metode kreiraju niz parova sastavljenih od vrednosti i ključeva
array( key => value, key2 => value2, key3 => value3, ...)
• GET metoda dodaje vrednosti u URL jer se tako vrednosti i prosleđuju
• POST ne dodaje vrednosti u URL jer podatke prosleđuje putem HTTP POST metode
<?php
echo $_GET['ime'];
?>
<html>
<form method="GET" action="">
Ime:<br />
<input type="text" name="ime" ><br />
<input type="submit" name="submit" value="Potvrdi">
</form>
</html>
<?php
echo "Ime: {$_POST['ime']} <br />";
echo "Lozinka: {$_POST['psw']} <br />";
echo "Pol: {$_POST['pol']} <br />";
echo "Vozilo: {$_POST['vozilo']}";
?>
<html>
<hr /><br />
Popuni polja:<br />
<form method="POST" action="">
<input type="text" name="ime" ><br />
<input type="password" name="psw"><br />
<input type="radio" name="pol" value="musko" checked> Muško<br />
<input type="radio" name="pol" value="zensko"> Žensko<br />
<input type="radio" name="pol" value="neodredjen"> Neodređen<br />
<input type="checkbox" name="vozilo" value="bajs"> Bajs<br />
<input type="checkbox" name="vozilo" value="kola"> Kola <br />
<input type="submit" name="submit" value="Potvrdi">
<input type="reset">
</form></html>
$_GET
• Moguć je bookmark stranice sa parametrima (npr. prilagođena pretraga proizvoda)
• Limitiran na 2.000 karaktera• Ne koristiti za osetljive informacije!
$_POST
• Informacije nisu vidljive• Nema ograničenja• Mana je što se ne može sačuvati prilagođena podešavanja formi
Postoje brojni okviri za izradu najrazličitijihaplikacija i web stranica. Razvijeni su i za programski jezik PHP i postali su veoma popularni.
Gotovo svaki aspekt njihovog razvoja mogućeje izvršiti efikasno korišćenjem ovih PHP okvira
Okviri (framework) pružaju mogućnostsvakom PHP developeru osnovu za izgradnjuweb aplikacija velikih performansi.
Objektno-orijentisani koncept baziran na MVC arhitekturi.
Okvir visokih performansi za razvoj Web 2.0 aplikacija.
Karakteristike: MVC, dizajn obrazac, bogatemogućnosti šema za keširanje, RBA (Role Based Access) i autentifikaciju, Database Access Objects (DAO), omogućeni su i Ajax dodaci i detaljni dokumenti;
Yii služi kao idealan okvir za razvoj poslovnihweb aplikacija, aplikacija za društvenemedije, SaaS, PaaS i mnogo više.
Verovatno najpopularniji, Laravel je već drugu godinuzaredom na Sitepoint.com proglašen za najpopularnijiPHP softverski okvir godine.
Razlog za to je sasvim sigurno njegovajednostavnost: jednostavnost korišćenja jedinstvenekombinacije alata koju ovaj radni okvir nudi; jednostavnostkoju programer oseća na svakom koraku dok razvijasopstvenu aplikaciju; najzad, jednostavan je i lak zaučenje.
Laravel to postiže naizgled banalnim stvarima: imenimaentiteta (klasa, metoda, varijabli itd.)
Razvijen je i specifičan način rada koji programerima kojiodluče da ga koriste, osim što donosi ozbiljne uštede u vremenu, udobnost i kvalitet rada, u velikoj meri garantujeda će kod koji napusti lokalno razvojno okruženje raditipodjednako dobro i na produkcionom serveru.
Smatra se jednim od najbržih PHP okvira.
Phalcon je open source okruženje kreiranokao C-ekstenzija, optimizovano za visokeperformanse.
Funkcionalnost je izložena putem PHP klasaspremnih za korišćenje.
Neke od odličnih mogućnosti koje nudi ovajPHP okvir jesu: prevodi, sigurnost, upravljanjepojedinim dodacima, univerzalni auto-punjači još mnogo toga.
Phalcon se može koristiti za razvoj MVC aplikacija viz: single-modul, multi-modul imikro aplikacija.
Zend okvir je proizvod kompanije Zend Technologies, kojaje imala i ima ključni uticaj na razvoj programskog jezikaPHP.
Osnovna ideja jeste da se pruži skup modula koji ćeolakšati implementaciju čestih postupaka u web programiranju.
Radni okvir Zend veliki naglasak stavlja na fleksibilnost ikonfigurabilnost, odnosno omogućuje prilagođavanjesvakog detalja u razvoju web aplikacije.
Kako bi se olakšala izgradnja osnovne strukturedirektorija, Zend okvir nudi jednostavne alate koji generišustrukturu direktorija i osnovnih datoteka web aplikacije.
Kompanija Zend je takođe poznata po veoma cenjenimsertifikatima, najtraženijim u PHP svetu, jer brojsertifikovanih Zend stručnjaka ni izdaleka ne prati tražnju.
Symphony radni okvir je kreirao Fabien Potencier, osnivač francuske firme za razvoj web aplikacija Sensio.
Za ovaj radni okvir je specifično da je kreiran na osnovu nekoliko rešenja sa otvorenim kodom. Uključujući i sloj za apstrakciju baza podataka, Creole , Mojavi MVC sloj i Propel sloj za definisanje relacija između objekata.
Symfony teži da ubrza kreiranje i održavanje web aplikacija i da zameni ponavljanje koda.
Symfony ima niske performanse i preko toga koristi se sa bytecode kešom.
Symfony služi za izgradnju robusnih aplikacija(jakih) u preduzetničkom kontekstu, kao i to da pruži developerima potpunu kontrolu nadkonfiguracijom: od strukture direktorijuma do stranih biblioteka, skoro sve se može promeniti. Kako bi ispunio smernice razvojnogpreduzetništva, Symfony dolazi u paketu sadodatnim alatima kako bi pomogao developerimada testiraju, debaguju i dokumentuju projekte
Prvo je potrebno pristupiti linku symfony.com/download
Nakon toga, u zavisnosti od sistema na kojem želite da instalirate simfony, odaberete komandu za instalaciju. U ovom slučaju je za Windows
Ukoliko je sve uspešno instalirano, pomoću ove komande možete napraviti prvi projekat koristeći Simfony radni okvir:
symfony new my_project
Codeigniter frejmvork pretstavlja kolekciju korisnih alata i konvencija pomoću kojih programer uspeva da na brži i lakši način dodje do rešenja gradeći internet aplikaciju pomoću PHP tehnologije.
Nasuprot mnogim drugim rešenjima jedna od prednsti Codeigniter frejmvorka jeste njegova veličina tj. veličina osnovnog jezgra je zaista mala i zahteva svega nekoliko dodatnih biblioteka, dok se ostale dinamički učitavaju u zavisnosti od potreba, čineći ovaj frejmvork vrlo brzim.
Puna podrška za baze podataka sa podrškom na nekoliko platformi.
Validacija formi i podataka
Bezbednosti i XSS (cross site scripting) zaštita
Upravljanje sesijama
Klasa za slanje E mail-ova. Podrška zapriloge, HTML/Tekstualni e-mail, nekolikoprotokla (sendmail, SMTP, Mail).
Klasa za manipulaciju i rad sa slikama(odsecanje, uveličanje, rotacija, itd.). Podržava GD, ImageMagick, and NetPBM
Sa tehničkog i arhitekturalnog stanovišta Codeigniter jenapravljen vođen sledećim ciljevima:
Dinamička instantacija - U Codeigniter-u, komponente i rutine se učitavaju i izvršavaju umesto svaki put, samo onda kada se to zahteva. Sistem ne pravi nikakve pretpostavke po pitanju onoga što je potrebno učitati izuzev osnovnih komponenti potrebnih za funkcionisanje, tako da je sistem ostaje izuzetno lagan u svojoj osnovnoj verziji. Događaji inicirani HTTP zahtevom i kontrolerima koje piše programer će odlučivati koje komponente sistema će biti aktivirane.Slabo uparivanje - Uparivanje je stepen međusobnezavisnosti komponenata sistema. Što komponente manjezavise jedno od druge, to je sistem više fleksibilan iponovo upotrebljiv.Singularnost komponenata– Singularnost je stepenspecijalizovanosti komponenata. U Codeigniter frejmvorkusvaka klasa i njene funkcije su visoko autonomne u ciljumaksimalne iskorišćenosti.