Uvod u PHP programiranje
PHP je skript jezik - jezik koji se ne "kompajlira" ili prevodi. Na računalu
postoji "interpreter", program koji čita skript naredbe te ih izvršava.
Zašto želimo učiti PHP ? Zašto ne koristiti C, C++, ili čak Pascal? Pa C, C++
i ostale jezike ćemo koristiti ali ne za pisanje dinamičkih web-stranica. PHP je
napravljen upravo s nakanom da se olakša pisanje dinamičkih web-stranica. Ako
želimo napraviti dinamičke web-stranice brzo i s minimalno napora - koristimo
PHP!
Kako ? Dinamičke php stranice su kao i obične web-stranice, osim što se php
naredbe mješaju s HTML tagovima. Točnije, PHP naredbe su omeđene posebnim
tagovima koji to indiciraju. Zašto web-server ne pošalje takve stranice kako su
napisane klijentu ? Odgovor je jer one imaju nastavak .php, koji kaže
web-serveru da to nije obična web-stranica, nego nešto traži dodatnu obradu, u
ovom slučaju php-interpreter. Taj će program proći kroz cijelu web-stranici, te
na mjestima indiciranim s PHP tagovima izvršiti naredbe, eventualno ih
supstituirati s ispisom koji oni produciraju. I takva prerađena stranica bit će
na kraju poslana klijentu koji će je prikazati.
<html>
<head>
<title>primjer 1.</title>
</head>
<body>
<?php
echo "Bok, narode!";
?>
</body>
</html>
<html>
<head>
<title>primjer 1.</title>
</head>
<body>
Bok, narode!
</body>
</html>
Primjer 1. Web-stranice s PHP
naredbama i obična web-stranica.
Podaci i varijable
Imena varijabli počinju s dolarom ($) i nije ih potrebno
unaprijed deklarirati. Ostatak imena mora početi s slovom ili podvučenom
crtom (_), ali ime može sadržavati i brojke. Velika i mala slova se razlikuju!
$var = "Ovo je string";
$Var = "A ovo je različita varijabla od one prije";
$_ok = "I ovo je dobro ime varijable";
$o23456 = 23456;
Primjer 2. Imena varijabli.
Vrste podataka su:
- cijeli broj (integer)
- boolean (istina/laž)
- realni ili decimalni broj (floating point)
- string (niz slova)
$a = -1234; // negativni broj
$b = 0123; // oktalni broj
$c = 0x1A; // heksadecimalni broj
$a = True; // boolean
$a = 1.234; // decimalni brojevi
$b = 1.2e3;
$c = 7E-10;
$a = 'string s jednostrukim navodnim znakom';
$b = "string koji ima kraj linije na krajun";
$c = "strings backslash-om i s navodnim znakom " u sebi. OK?";
Primjer 3. Vrste varijabli.
Složeni podaci:
- niz (array) : indeks u nizu mora biti ili nenegativni cijeli broj ili
string
- razred (object ili class)
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' ); # niz string-ova
$b['ab'] = 1.3: # niz decimalnih brojeva
$b['ac'] = 3.2;
$c[1] = 'jedan';
$c['01'] = 1; # različita varijabla od $c[1] !
$zz = 0;
$aa[$zz] = True;
$d = array(1,2,3,5,7,11,13,17,19); # niz s cjelobrojnim indeksom
// za razrede nećemo navoditi primjere - previše složeno
Primjer 4. Nizovi.
Sintaksa
Sintaksa je slična C-jeziku, ili Perl-skriptu. Naredbe treba
završtiti s tič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
ugnježđenih podstruktura, s tim da za početak i kraj strukture koriste se
vitičaste zagrade, '{' i '}', umjesto begin i end. Međutim, tu
analogija s Pascalom ili C++ prestaje, jer varijable definirane u lokalnu u
substrukturi vrijede i na globalnoj razini (ali unutar programa ili
podprograma/funkcije).
{
php-naredbe
{
php-naredbe
{
....
}
......
}
.....
{
.....
{
.....
{
.....
}
.....
}
.....
}
.....
}
Unutar HTML datoteke PHP naredbe su omeđene posebnim
tagovima:
- <? ..... ?>
- ili <?php ..... ?>
- ili <script language="php"> ..... </script>
- ili <% ..... %>
<body>
Ovo je <? $a=1; echo ($a); ?>. primjer.
A ovo je <?php $b="drugi"; echo ($b); ?> primjer.
Ali može ovako:
<script language="php">
$c=3.0; // primjer C++-nalik komentara
$d=6.0; # ljuska-nalik komentar (shell)
$e=$d-$c; /* C-like komentar */
</script>
za <% echo ($e); %>. i 4. primjer.
</body>
Primjer 5. Sintaksa PHP
web-stranica.
Petlje i if-naredbe
-
if-naredba
Općenito struktura izgleda ovako:
if (izraz1)
{
php-naredbe
}
elseif (izraz2)
{
php-naredbe
}
elseif (izraz3)
{
php-naredbe
}
....
else
{
php-naredbe
}
gdje su izrazi u zagradama varijable ili izrazi koji
imaju vrijednost 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"); }
Primjer 6. Sintaksa
if-naredbe
-
while petlja
$i = 0;
$s = $i;
while ($i <= 10)
{
$s += $i++; // skraćeni zapis za: $s = $s+$i; $i = $i+1;
}
print $s;
// druga verzija
$i = 0;
$s = $i;
while ($i < 10)
{
$s += ++$i; // skraćeni zapis za: $i = $i+1; $s = $s+$i;
}
print $s;
Primjer 7.
while-petlja (
izvorni
program).
-
do..while
-
for
-
foreach
Ova petlja je slična foreach-perlji u Perlu i
prvenstveno se koristi za iteriranje po članovima nekog niza. Pogledati
primjere!
$arr = array (1,2,3,5,7,11,13,17,19);
$sum = 0;
foreach ($arr as $val) { $sum += $val; }
print $sum;
$telefon = array (
'Pero' => '3456-345',
'Miro' => '5678-432',
'Toma' => '6545-111',
'Vera' => '6545-111'
);
foreach ($telefon as $ime => $broj)
{
if (($broj == $telefon['Vera'])and ($ime != 'Vera'))
{
print "$ime i Vera žive zajedno!n";
}
}
Primjer 10.
foreach-petlja (
izvorni
program).
Operacije na podacima
- Brojevi
$a = $b + $c; // zbrajanje
$a = $b - $c;
$a = $b * $c; // množenje
$a = $b / $c; // djeljenje
$a = $b % $c; // ostatak kod djeljenja cijelih brojeva
$a++; // inkrement za jedan
++$a;
$a--;
--$a;
$a += 10; // isto što i $a = $a + 10;
$a -= 10; // $a = $a - 10;
$a *= 10; // $a = $a * 10;
$a /= 10; // $a = $a / 10;
$a %= 10; // $a = $a % 10;
$a & $b // and operacija na bitovima
$a | $b // or operacija na bitovima
$a ^ $b // ekskluzivni or operacija na bitovima
~$a // not operacija na bitovima
$a<<$b // pomak od $b koraka na bitovima u lijevo
// = množenje s 2
$a>>$b // pomak od $b koraka na bitovima u desno
// = dijeljenje s 2
$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;
Primjer 11. 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 istinito
$a && $b
$a or $b // = True ako je $a ili $b istinito
$a || $b
$a xor $b // = True ako je $a ili $b istinito ali ne i oboje
!$a // = True ako je $a nije istinito
Primjer 12. Operacija s boolean
izrazima i veličinama.
- String
$a = $a . " ovo smo naljepili na kraj varijable $an";
$a .= " isto što i ono prije!n";
setlocale (LC_ALL, 'hr_HR'); // Koristi pravila za hrvatski jezik!
echo ("Ispiši ovo!");
echo "Ispiši ovo!"; // ovo je isto tako dobro!
print "isto to";
print ("ali i ovo");
print strlen("Koja je dužina ovog izraza?");
// strlen - računa dužinu stringa
print strrev("Može li ovo tko pročitati?");
// strrev izvrče string naopačke
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
// regularni izrazi (regular expression) >>> Pravi mrak.
Primjer 13.
Operacije sa string veličinama (
izvorni program).
Funkcije i podprogrami
function hocu_kafu ($type = "cappucina")
{
return "Šalicu $type, molim!n";
}
echo hocu_kafu ();
// ispiše "Šalicu cappucina, molim!"
echo hocu_kafu ("espressa");
// ispiše "Šalicu espressa, molim!"