04. Dodatak na predavanje
Osnove PHP programiranja
Uvod - zašto nam je PHP jezik zanimljiv ?
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 kraju\n";
$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
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 \$a\n";
$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!"
|
Primjer 14. Funkcija s argumentom koji
se može ispustiti
(izvorni program).