Osnove PHP programiranja Dinamičke PHP stranice su kao i obične web-stranice, s’tim da se one realizuju na Web-serveru. Zašto web-server ne pošalje takve stranice kako su napisane klijentu ? Odgovor je jer one imaju nastavak .php, koji kaže webserveru da to nije obična web-stranica, nego nešto traži dodatnu obradu, u ovom slučaju php-interpreter. Program će proći kroz celu web-stranicu i zatim izvršiti realizaciju na mestima gde se PHP script nalazi.
primer 1.
primer 1. Pozdrav, narode!
Razlika izmeñu Web-stranice s PHP naredbama i obične web-stranice.
Podaci i promenjive Imena promenjivih počinju s dolarom ($) i nije ih potrebno unaprijed deklarisati. Ostatak imena mora početi s slovom ili podvučenom crtom (_), ali ime može sadržati i brojeve. Velika i mala slova se razlikuju! $var = "Ovo je string"; $Var = "A ovo je različita promenjiva od one pre"; $_ok = "I ovo je dobro ime promenjive"; $o23456 = 23456; Imena promenjivih. Vrste podataka su: • • • •
celi broj (integer) boolean (tačno/netačno) realni ili decimalni broj (floating point) string (niz slova)
$a = -1234; $b = 0123; $c = 0x1A;
// negativni broj // oktavni broj // heksadecimalni broj
$a = True;
// boolean
$a = 1.234; $b = 1.2e3; $c = 7E-10;
// decimalni brojevi
$a = 'string pod znacima navoda'; $b = "string koji ima kraj linije na kraju\n"; $c = "string sa backslash-om \\ i sa znacima navoda \" u sebi"; Vrste varijabli. Složeni podaci: • •
niz (array) : indeks u nizu mora biti ili pozitivni celi broj ili string razred (object ili class) $a = array( 1 => 'one', 2 => 'two', 3 => 'three' ); # niz string-ova $b['ab'] = 1.3: $b['ac'] = 3.2;
# niz decimalnih brojeva
$c[1] = 'jedan'; $c['01'] = 1;
# različita promenjiva od $c[1] !
$zz = 0; $aa[$zz] = True; $d = array(1,2,3,5,7,11,13,17,19); # niz s celobrojnim indeksom
Nizovi.
Sintaksa
Sintaksa je slična C-jeziku, ili Perl-skriptu. Naredbe treba završtiti s tačka-zarez znakom ';' a mogu se protezati preko više linija, ili jedna linija može imati više naredbi.
Kao u pascalu-program se sastoji od niza struktura i ugneždenih podstruktura, s tim da za početak i kraj strukture koriste se vitičaste zagrade, '{' i '}', umjesto begin i end. { php-naredbe { php-naredbe { .... } ...... } ..... { ..... { ..... { ..... } ..... } ..... } ..... } Unutar HTML datoteke PHP naredbe su omeñene posebnim tagovima: • • • •
ili ili <script language="php"> ..... ili <% ..... %> Ovo je . A ovo je . Ali može ovako: <script language="php"> $c=3.0; $d=6.0;
// C++-nalik komentara # ljuska-nalik komentar (shell)
$e=$d-$c; za <% echo ($e); %>.
/* C-like komentar */
Sintaksa PHP web-stranica.
Petlje i if-naredbe •
if-naredba Struktura izgleda ovako: if (izraz1) { php-naredbe } elseif (izraz2) { php-naredbe } elseif (izraz3) { php-naredbe } .... else { php-naredbe } gdje su izrazi u zagradama promenjivee ili izrazi koji imaju vrednost boolean (istina ili laž). $a = 1; $b = 50; if ( $a > $b) { echo ("a je veće od b"); } elseif ( $a == $b) { echo ("a je jednako b"); }
else { echo ("b je veće od a"); } Sintaksa if-naredbe •
while petlja $i = 0; $s = $i; while ($i <= 10) { $s += $i++; } print $s;
// skraćeni zapis za: $s = $s+$i; $i = $i+1;
// druga verzija $i = 0; $s = $i; while ($i < 10) { $s += ++$i; } print $s;
// skraćeni zapis za: $i = $i+1; $s = $s+$i;
while-petlja •
do..while $i = 0; $s = $i; do { $s += $i++; } while ($i <= 100); print $s; do-while-petlja
•
for $s = 0; for ($i = 0; $i <= 1000; $i++) { $s += $i; } print $s;
for-petlja •
foreach Ova petlja je slična foreach-perlji u Perlu i prvenstveno se koristi za iteriranje po članovima nekog niza. $arr = array (1,2,3,5,7,11,13,17,19); $sum = 0; foreach ($arr as $val) { $sum += $val; } print $sum; $telefon = array ( 'Ime1' => '123-45', 'Ime2' => '678-910', 'Ime3' => '11-1213', ); foreach ($telefon as $ime => $broj) { if (($broj == $telefon['Ime1'])and ($ime != 'Ime1')) { print "$ime i Ime1 žive zajedno!\n"; } } foreach-petlja Operacije na podacima
•
Brojevi $a = $b + $c; $a = $b - $c; $a = $b * $c; $a = $b / $c; $a = $b % $c;
// sabiranje // množenje // deljenje // ostatak kod djeljenja celih brojeva
$a++; ++$a; $a--; --$a;
// inkrement za jedan
$a += 10;
// isto što i $a = $a + 10;
$a -= 10; $a *= 10; $a /= 10; $a %= 10;
// $a = $a - 10; // $a = $a * 10; // $a = $a / 10; // $a = $a % 10;
$a & $b $a | $b $a ^ $b ~$a $a<<$b
// and operacija na bitovima // or operacija na bitovima // ekskluzivni or operacija na bitovima // not operacija na bitovima // pomeranje od $b koraka na bitovima u levo // = množenje s 2 // pomeranje od $b koraka na bitovima u desno // = deljenje s 2
$a>>$b
$a &= $b // $a = $a & $b; $a |= $b // $a = $a | $b; $a ^= $b // $a = $a ^ $b; $a <<= $b // $a = $a << $b; $a >>= $b // $a = $a >> $b; Operacije na brojevima •
Boolean $a == $b // = True ako je $a i $b isto $a != $b // = True ako je $a i $b nisu isti $a <> $b // = True ako je $a i $b nisu isti $a < $b // = True ako je $a manje od $b $a <= $b // = True ako je $a manje ili jednako $b $a >= $b // = True ako je $a veće ili jednako $b $a and $b // = True ako je $a i $b tačno $a && $b $a or $b // = True ako je $a ili $b tačno $a || $b $a xor $b // = True ako je $a ili $b ako je samo jedno tačno !$a // = True ako je $a netačno Operacija s boolean izrazima i veličinama.
•
String
$a = $a . " ovo se nalazi na kraj promenjivee \$a\n"; $a .= " isto što i ono prethodno!\n";
echo ("Ispiši ovo!"); echo "Ispiši ovo!"; print "isto to"; print ("ali i ovo"); print strlen("Koja je dužina ovog izraza?"); // strlen - računa dužinu stringa print strrev("strrev izvrće string naopko?");
print strtolower("SVE mala SLOVA!"); // prebacuje slova u mala print strtoupper("sve Velika slovA ma što pisali!"); print ucfirst("rečenice treba započeti velikim slovom!"); // PUNO drugih funkcija
Operacije sa string veličinama
Funkcije i podprogrami function hocu_kafu ($type = "kafa") { return "Šoljicu $type, molim!\n"; } echo hocu_kafu (); // ispiše "Šoljicu kafe, molim!" Funkcija s argumentom koji se može ispustiti