28.04.2015 Views

PHP Keelereeglid

PHP Keelereeglid

PHP Keelereeglid

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>PHP</strong> Skriptikeel<br />

• Üldreeglid<br />

• Andmetüübid<br />

• Muutujad<br />

• Operaatorid<br />

• Laused<br />

• Funktsioonid<br />

• Massiivid<br />

• Objektid<br />

Veebirakenduste loomine V - 1


<strong>PHP</strong> - Üldreeglid<br />

• Iga käsk peab lõppema semikooloniga<br />

• Osadel käskudel (funktsioonidel) võib sulud ära jätta<br />

echo(”Selle kirjutame <strong>PHP</strong> kaudu”);<br />

echo ”Selle kirjutame <strong>PHP</strong> kaudu”;<br />

• Väljastada võib kõiki kehtivaid HTML-i<br />

konstruktsioone<br />

<br />

<br />

• <strong>PHP</strong> parseri kohta saab põhjalikku infot<br />

<br />

Veebirakenduste loomine V - 2


<strong>PHP</strong> - Üldreeglid<br />

• Muutujate defineerimine ja kasutamine<br />

$kasutaja = ”Rummu Jüri”;<br />

echo($kasutaja);<br />

Muutuja nimi peab vastama samadele nõuetele nagu JavaScript<br />

• HTML vormide edastamisel saab <strong>PHP</strong> skript endale<br />

samanimelised muutujad<br />

<br />

Kasutajanimi: <br />

Parool: <br />

<br />

<br />

$kasutaja == ”kasutaja”<br />

$parool == ”mnuprl”<br />

$logi == ”Logi sisse”<br />

Veebirakenduste loomine V - 3


<strong>PHP</strong> - Üldreeglid<br />

• Lubatud on C-keele kommentaarid<br />

/*<br />

Siia saab kirjutada mitmerealse teksti,<br />

mis kõik on välja kommenteeritud,<br />

kaasa arvatud <strong>PHP</strong> koodijupid: $kasutaja = ”Rummu Jüri”;<br />

*/<br />

// Üherealine kommentaar<br />

echo($kasutaja);<br />

• Lisaks Perl-keele tüüpi kommentaarid<br />

# Perli moodi ”kommenteerimine”<br />

• Välja saab trükkida ka HTML kommentaare<br />

echo(””);<br />

• <strong>PHP</strong> on teataval määral tõstutundlik (case-sensitive) –<br />

sisseehitatud funktsioonid ja struktuurid ei ole, samas<br />

identifikaatorid on<br />

Veebirakenduste loomine V - 4


<strong>PHP</strong> – URL kodeerimine<br />

• HTML vormi andmed on nimi/väärtus paaridena<br />

kasutaja/kasutaja<br />

parool/mnuprl<br />

logi/Logi+sisse<br />

• URL aadressis pannakse kõik paarid kokku kasutades<br />

elementide eristamiseks spetsiaalmärke<br />

kasutaja=kasutaja&parool=mnuprl&logi=Logi+sisse<br />

• Kui mingi element ei oma väärtust, siis edastatakse<br />

vaid nimi ja ’=’<br />

kasutaja=&parool=mnuprl<br />

• <strong>PHP</strong> koodi jõuavad nad samanimeliste muutujatena<br />

Veebirakenduste loomine V - 5


<strong>PHP</strong> – URL kodeerimine<br />

• Osa märke on reserveeritud. Nende asemel trükitakse<br />

erikoodid<br />

Märk ASCII väärtus (decimal) URL kood (hex)<br />

Tabulaator 09 %09<br />

Tühik 16 %20<br />

” 18 %22<br />

( 40 %28<br />

) 41 %29<br />

, (koma) 44 %2C<br />

: 58 %3A<br />

; 59 %3B<br />

< 60 %3C<br />

> 62 %3E<br />

@ 64 %40<br />

\ 102 %5C<br />

| 114 %7C<br />

~ 126 %7E<br />

Veebirakenduste loomine V - 6


<strong>PHP</strong> – URL kodeerimine<br />

• Osadel märkidel on spetsiaalne tähendus<br />

Märk Tähendus URL kood (hex)<br />

# Dokumendi osale viitamine %23<br />

% Erimärkide kodeerimine %25<br />

& Vormi nimi/väärtus paaride %26<br />

eristamine<br />

+ Tühik väärtuse sees %2B<br />

/ Kataloogi tee eraldaja %2F<br />

= Nime ja selle väärtuse sidumine %3D<br />

? Päringustringi alguse tähistus %3F<br />

• URL koodi kasutatakse vältimaks nende erisümbolite<br />

interpreteerimist – näiteks tühik väärtuspaari sees<br />

peab olema eraldatud ’+’-ga, mujal URL-is %20-ga<br />

Veebirakenduste loomine V - 7


<strong>PHP</strong> – URL kodeerimine<br />

• Selleks, et saaks korrektset URL-i välja trükkida<br />

(näiteks viide teisele ressursile), saab kasutada 4<br />

funktsiooni:<br />

– urlencode/urldecode – kasuta päringustringide<br />

kodeerimiseks (tühik ’+’)<br />

– rawurlencode/rawurldecode – kasuta muude (failinimede)<br />

kodeerimiseks (tühik %20)<br />

originaal:<br />

http://server/~kasutaja/skript.php?nimi=vaartus paar<br />

urlencode:<br />

http%3A%2F%2Fserver%2F%7Ekasutaja%2Fskript.php%3Fnimi%3Dvaartus+paar<br />

rawurlencode:<br />

http%3A%2F%2Fserver%2F%7Ekasutaja%2Fskript.php%3Fnimi%3Dvaartus%20paar<br />

Veebirakenduste loomine V - 8


<strong>PHP</strong> – Erimärkide kasutamine<br />

• Oletame, et tahame trükkida:<br />

Mark’s brother said, ”Ain’t that cool?”<br />

• Kaks vale kasutust<br />

echo (”Mark’s brother said, ”Ain’t that cool?””);<br />

echo (’Mark’s brother said, ”Ain’t that cool?”’);<br />

• Õige lahendus apostroofi katastroofi vältimiseks<br />

echo (”Mark\’s brother said, \”Ain\’t that cool?\””);<br />

Veebirakenduste loomine V - 9


<strong>PHP</strong> – Erimärkide kasutamine<br />

• Märgid, milledel on <strong>PHP</strong>-s eriline tähendus<br />

Eraldus<br />

Tähendus<br />

\’ Apostroof<br />

\” Jutumärk<br />

\\ Tagurpidi kaldkriips<br />

\$ Dollari märk (muidu märgib muutujat)<br />

\n Uus rida<br />

\r Reavahetus<br />

\t Tabulaator<br />

• Ka muutuja nime (kujul $muutuja) saab välja trükkida<br />

(echo(”\$muutuja”))<br />

• Kui tekib kahtlus, võib alati suvalise märgi sellisel viisil ”ära<br />

päästa”<br />

• Veel üheks meetodiks on kasutada echo puhul jutumärkide<br />

asemel apostroofe – sel puhul muutujaid ei parsita!<br />

Veebirakenduste loomine V - 10


<strong>PHP</strong> – Erimärkide kasutamine<br />

• Selleks, et saada JavaScripti lõiku kujul<br />

<br />

alert(”Tere!\n\n\tKasutaja: Chris”);<br />

<br />

• Esimesel vaatlusel võiks kirjutada nii:<br />

<br />

<br />

<br />

• See on aga väär kuna erimärkide väljastamise asemel töötleb<br />

neid <strong>PHP</strong>. Korrektne kasutus on selline:<br />

<br />

<br />

<br />

Veebirakenduste loomine V - 11


<strong>PHP</strong> – Andmetüübid<br />

• <strong>PHP</strong>-s on 3 baas-andmetüüpi<br />

–Täisarv(integer) [32-bitine arv]<br />

– Reaalarv (double)<br />

– String (string)<br />

2 Täisarv<br />

2.0 Reaalarv<br />

”2” String<br />

”2 tundi” String<br />

• Lisaks on ”peaaegu-baastüübid”<br />

– Massiivid<br />

– Objektid<br />

Veebirakenduste loomine V - 12


<strong>PHP</strong> – Konstandid<br />

• Konstantide defineerimiseks kasutab <strong>PHP</strong> spetsiaalset<br />

funktsiooni define(konstandi_nimi, väärtus)<br />

define(”COMPANY”, ”Commodore”);<br />

define(”KOLLANE”, ”#FFFF00”);<br />

define(”VERSION”, 3);<br />

define(”NL”, ”\n”);<br />

• Kasutusnäide<br />

echo(COMPANY . ” ehitas kunagi arvuteid” . NL);<br />

• Konstandi olemasolu saab testida:<br />

if (defined(”KOLLANE”)) {<br />

echo(”\n”);<br />

}<br />

Veebirakenduste loomine V - 13


<strong>PHP</strong> – Konstandid<br />

• Sisseehitatud konstandid<br />

TRUE<br />

FALSE<br />

Globaalne informatsioon<br />

<strong>PHP</strong>_VERSION<br />

<strong>PHP</strong>_OS<br />

Faili parsimine<br />

__FILE__<br />

__LINE__<br />

Hetkel parsitava faili nimi<br />

Hetkel parsitava rea number<br />

Veakoodid<br />

E_ERROR<br />

E_WARNING<br />

E_PARSE<br />

E_NOTICE<br />

Veebirakenduste loomine V - 14


<strong>PHP</strong> – Muutujad ja tüübimuundus<br />

• Muutuja defineerimine<br />

$ridu = 10;<br />

$produkt = ”Pump”;<br />

$hind = 24.00;<br />

$saatekulud = 5.00;<br />

$kokku = $hind + $saatekulud;<br />

• Stringi konverisoonid<br />

$str = ”222B Baker Street”;<br />

$x = 3 + $str; // $x = 225, muutuja $str ise ei muutu<br />

– Kui string algab numbriga, siis saadakse selle väärtus<br />

– Kui algab millegi muuga, saadakse tulemuseks 0<br />

Veebirakenduste loomine V - 15


<strong>PHP</strong> – Muutujad ja tüübimuundus<br />

• Tüübimuundus vastavalt tüüpidele<br />

$a = 1; // täisarv<br />

$b = 1.0; // reaalarv<br />

$c = $a + $b; // tulemuseks reaalarv väärtusega 2.0<br />

$d = $c + ”6th”; // saame reaalarvu väärtusega 8.0<br />

• Sunnitud tüübimuundus<br />

$a = 11.2; // reaalarv<br />

$a = (int) $a; // täisarv väärtusega 11<br />

$a = (double) $a; // reaalarv väärtusega 11.0<br />

$b = (string) $a; // string väärtusega ”11”<br />

• Muutuja muutujad<br />

$field = ”ProductID”;<br />

$$field = ”432BB”;<br />

echo($ProductID);<br />

echo($$field);<br />

// Trükib 432BB<br />

// Trükib 432BB<br />

Veebirakenduste loomine V - 16


<strong>PHP</strong> – Muutujate abifunktsioonid<br />

• Kasulikud funktsioonid<br />

– gettype() – tagastab muutuja andmetüübi<br />

• ”integer”, ”double”, ”string”, ”array”, ”object”, ”class”,<br />

”unknown type”<br />

if (gettype($input) == ”integer”) {<br />

$vanus = $input;<br />

}<br />

– settype() – muudab muutuja tüübi; kui muuta ei saa,<br />

tagastab false<br />

$a = 7.5; // reaalarv<br />

if (settype($a, ”integer”)) {<br />

echo(”Muutus oli edukas”)<br />

} else {<br />

echo(”Muutus ei õnnestunud”);<br />

}<br />

Veebirakenduste loomine V - 17


<strong>PHP</strong> – Muutujate abifunktsioonid<br />

• Kasulikud funktsioonid<br />

– isset() – tagastab true või false vastavalt muutuja<br />

olemasolule<br />

– unset() – eemaldab muutuja<br />

$ProductID = ”432BB”;<br />

if (isset($ProductID)) {<br />

echo(”Muutuja eksisteerib”);<br />

}<br />

unset($ProductID);<br />

if (isset($ProductID)) {<br />

echo(”Muutuja eksisteerib”);<br />

}<br />

// See trükitakse<br />

// Seda ei trükita<br />

– empty() – peaaegu isset() vastand<br />

echo empty($new);<br />

$new = 1;<br />

echo empty($new);<br />

$new = ””;<br />

echo empty($new);<br />

// true<br />

// false<br />

// true<br />

Veebirakenduste loomine V - 18


<strong>PHP</strong> – Muutujate abifunktsioonid<br />

• Kasulikud funktsioonid<br />

– is_...() – tagastab true või false kui muutuja vastab<br />

tüübile<br />

• is_int(), is_integer(), is_long()<br />

• is_double(), is_float(), is_real()<br />

• is_string(), is_array(), is_object()<br />

$ProductID = ”432BB”;<br />

if (is_string($ProductID)) {<br />

echo(”String”);<br />

}<br />

– ...val() – veel üks moodus muutuja tüübi määramiseks<br />

$ProductID = ”432BB”;<br />

$i = intval($ProductID); // Tulemuseks 432<br />

Veebirakenduste loomine V - 19


<strong>PHP</strong> – Operaatorid<br />

• Aritmeetilised operaatorid<br />

Operaator<br />

Tähendus<br />

+ Liitmine 7 + 2 = 9<br />

- Lahutamine 7 – 2 = 5<br />

* Korrutamine 7 * 2 = 14<br />

/ Jagamine 7 / 2 = 3.5<br />

% Moodul 7 % 2 = 1<br />

• Unaarsed operaator<br />

Operaator<br />

Tähendus<br />

- Miinus $b = -$a;<br />

• Omistusoperaator<br />

Operaator<br />

Tähendus<br />

= Omistamine $b = 5;<br />

Veebirakenduste loomine V - 20


<strong>PHP</strong> – Operaatorid<br />

• Võrdlusoperaatorid<br />

Operaator<br />

Tähendus<br />

== Võrdub $h == $i<br />

< Väiksem kui $h < $i<br />

> Suurem kui $h > $i<br />

= $i<br />

!= Mittevõrdne $h != $i<br />

Mittevõrdne $h $i<br />

• Loogilised operaatorid<br />

Operaator<br />

Tähendus<br />

&&, and And $h && $i, $h and $i<br />

||, or Or $h || $i, $h or $i<br />

xor Xor $h xor $i<br />

! Not !$h<br />

Veebirakenduste loomine V - 21


<strong>PHP</strong> – Operaatorid<br />

• Stringi sidumisoperaator<br />

Operaator Tähendus<br />

. Sidumisoperaator ”Mina” . ” ” . ”olen”<br />

• Erijuhud stringide puhul<br />

$first = ”Phop”; $second = ”Bicycles”;<br />

echo($first . ” ” . $second);<br />

echo(”$first $second”);<br />

// sidumine<br />

// interpoleerimine – parem<br />

echo(”$first’s Bicycles”); // Kehtib kuna ’ pole ID osa<br />

echo(”$first4bikes”); // Ei kehtib kuna peab tervet IDks<br />

echo(”$(first)4bikes”); // Kehtib kuna muutuja eraldatud<br />

Veebirakenduste loomine V - 22


<strong>PHP</strong> – Operaatorid<br />

• Otsene if<br />

Operaator<br />

tingimus ? ”true” : ”false”<br />

Näide<br />

($pos > 1 ? ”Possid” : ”Poss”)<br />

• Bititaseme operaatorid<br />

Operaator<br />

Tähendus<br />

& And 1011 & 1101 = 1001<br />

| Or 1011 | 1101 = 1111<br />

^ Xor 1011 ^ 1101 = 0110<br />

~ Not ~1011 = 0100<br />

>> Shift right 1011 >> 2 = 0010<br />


<strong>PHP</strong> – Operaatorid<br />

• Omistamisoperaatorite lühiariandid<br />

Operaator<br />

Tähendus<br />

$h += $i $h = $h + $i<br />

$h -= $i $h = $h - $i<br />

$h *= $i $h = $h * $i<br />

$h /= $i $h = $h / $i<br />

$h %= $i $h = $h % $i<br />

$h &= $i $h = $h & $i<br />

$h |= $i $h = $h | $i<br />

$h ^= $i $h = $h ^ $i<br />

$h .= $i $h = $h . $i<br />

$h >>= $i $h = $h >> $i<br />

$h


<strong>PHP</strong> – Operaatorid<br />

• Muutuja operaator<br />

Operaator Tähendus<br />

$ Muutuja identikaator $h<br />

• Objekti operaator<br />

Operaator Tähendus<br />

-> Objekti meetod/muutjua $h->$name<br />

• Veateate eemaldamine<br />

Operaator<br />

Tähendus<br />

print (5 / 0);<br />

// genereerib vea<br />

@print (5/0); või print @(5/0); // ei genereeri viga<br />

Veebirakenduste loomine V - 25


<strong>PHP</strong> – Operaatorite järjekord<br />

• Operaatorite järjekord (kõrgem prioriteet esimesena)<br />

() Sulud<br />

new<br />

Objekti instantsi loomine<br />

[] Massiivi indeksi poole pöördumine<br />

! Loogiline eitus<br />

~ Bititasemel eitus<br />

++, -- Suurendamine, vähendamine<br />

@<br />

Veateate vältimine<br />

*, /, % Korrutamine, jagamine, mooduli võtmine<br />

+, -, . Liitmine, lahutamine, stringide ühendamine<br />

Bitinihked<br />

Väiksem/suurem (või võrdne)<br />

==, != Võrdus, mittevõrdus<br />

&<br />

Bititaseme AND<br />

^<br />

Bititaseme XOR<br />

| Bititaseme OR<br />

&&<br />

Loogiline AND<br />

|| Loogiliine OR<br />

?: Tingimuslik lause<br />

=, +=, -=, ... Omistustehted<br />

and<br />

Loogiline AND<br />

xor<br />

Loogiline XOR<br />

or<br />

Loogiline OR<br />

, Miitme väärtuse hindamine (funktsiooni parameetrid)<br />

Veebirakenduste loomine V - 26


<strong>PHP</strong> – Tingimuslikud laused<br />

• if – lause<br />

if (tingimus) {<br />

lause(d);<br />

} elseif {<br />

lause(d);<br />

} else {<br />

lause(d);<br />

}<br />

• switch – lause<br />

switch (väärtus) {<br />

case väärtus_a:<br />

lause(d);<br />

[break;]<br />

case väärtus_b:<br />

lause(d);<br />

[break;]<br />

...<br />

default:<br />

lause(d);<br />

}<br />

Veebirakenduste loomine V - 27


<strong>PHP</strong> – Tsüklilaused<br />

• while – lause<br />

while (tingimus) {<br />

lause(d);<br />

}<br />

• do...while – lause<br />

do {<br />

lause(d);<br />

} while (tingimus)<br />

• for – lause<br />

for (algväärtus; tingimus; samm) {<br />

lause(d);<br />

}<br />

• break, return, exit<br />

– Break väljub tsüklist; return funktsioonist; exit<br />

programmist<br />

Veebirakenduste loomine V - 28


<strong>PHP</strong> – Tsüklilaused<br />

• for – lause erijuht<br />

for (algväärtus; tingimus; samm):<br />

lause(d);<br />

endfor;<br />

Näide:<br />

<br />

<br />

<br />

Selles näites trükitakse tabeli rida välja 5 korda<br />

Veebirakenduste loomine V - 29


<strong>PHP</strong> – Väliste failide kasutamine<br />

• Väliseid faile saab külge pookida<br />

– require lause abil<br />

require abil külge võetud faili sisu pannakse require lause asemele ning<br />

seejärel loetakse läbi<br />

require(”common.php”);<br />

echo(COMPANY . NL);<br />

– include lause abil<br />

iga kord kui parser include käsku kohtab, loeb ta läbi selle faili sisu<br />

Inlcude annab meile huvitava võimaluse trüklis faile sisse võtta<br />

for ($i = 1; $i


<strong>PHP</strong> – Funktsioonid<br />

• Kasutame function võtmesõna<br />

// deklareerime ja defineerime funktsiooni<br />

function cube($num) {<br />

return $num * $num * $num; // Tagastab $num 3<br />

}<br />

// Kutsume tema välja:<br />

echo(cube(6)); // Trükib 216<br />

function js_alert($msg) {<br />

// create JavaScript alert using $msg<br />

if ($msg == ””) return;<br />

// Kui teade on tühi, siis välju funktsioonist<br />

}<br />

echo (<br />

”\n\n” .<br />


<strong>PHP</strong> – Funktsioonid<br />

• Parameetreid võib edastada väärtuse või aadressi järgi<br />

– Tavaliselt antakse parameetrid väärtuse kaudu – ühe muutuja väärtus<br />

kopeeritakse funktsiooni lokaalmuutujasse (või pinusse või protsessori<br />

registrisse)<br />

function print_double($num) {<br />

$num = $num * 2;<br />

echo($num);<br />

}<br />

$a = 5;<br />

echo($a); // Trükib 5<br />

print_double($a); // Trükib 10<br />

echo($a); // Trükib ikka 5<br />

– Aadressi või viite järgi antakse funktsioonile muutuja aadress mälus<br />

function raise(&$salary, $percent) {<br />

$salary += $salary * $percent/100;<br />

}<br />

$sal = 50000;<br />

echo(”Pre-raise salary: $sal\n”); // Trükib 50000<br />

raise($sal, 4);<br />

echo(”Post-raise salary: $sal\n”); // Trükib 52000<br />

Veebirakenduste loomine V - 32


<strong>PHP</strong> – Muutujate skoop<br />

• Parameetreid võib edastada väärtuse või aadressi järgi<br />

– Vaikimisi kehtivad kõik muutujad oma plokis ning kõigis, mis sellesse<br />

kuuluvad (va. juhul kui funktsioon samanimelise defineerib)<br />

$position = ”m”;<br />

function change_pos() {<br />

$position = ”b”;<br />

}<br />

change_pos();<br />

echo(”$position”);<br />

// Trükib ”m”<br />

– Muutuja on võimalik defineerida globaalseks või viidata globaalsele, kasutades<br />

global võtmesõna<br />

$position = ”m”;<br />

function change_pos() {<br />

global $position;<br />

$position = ”b”;<br />

}<br />

change_pos();<br />

echo(”$position”);<br />

// ≡ $GLOBALS[”posotion”] = ”b”;<br />

// Trükib ”b”<br />

Veebirakenduste loomine V - 33


<strong>PHP</strong> – Muutujate skoop<br />

• Staatilised muutujad<br />

– Aeg-ajalt osutub kasulikuks mingi funktsiooni sees tehtavaid toiminguid hoida<br />

selle funktsiooni muutujates<br />

– Tavaliselt lokaalmuutujad kaotavad väärtuse kui funktsioonist väljutakse<br />

function counter() {<br />

$counter = 0;<br />

++$counter;<br />

}<br />

– Selle vastu aitab static võtmesõna<br />

function counter() {<br />

static $counter = 0;<br />

++$counter;<br />

}<br />

// nullime loenduri funtsiooni sisenedes<br />

// suurendame loenduri väärtust<br />

// nullime loenduri esimesel funtsiooni sisenemisel<br />

// suurendame loenduri väärtust (igal f.-ni väljakutsel)<br />

Veebirakenduste loomine V - 34


<strong>PHP</strong> – Sisemised ja rekursiivsed f.-nid<br />

• Sisemine funktsioon<br />

function vol($r) {<br />

function cube($num) {<br />

...<br />

}<br />

// Tagastab raadiusega r sfääri ruumala<br />

}<br />

return 3.14159 * cube($r);<br />

$radius = 2;<br />

echo(vol($radius)); // Trükib 25-13272<br />

echo(cube(4)); // Trükib 64<br />

• Rekursiivne funktsioon<br />

function power($base, $exp) {<br />

if ($exp) {<br />

return $base * power($base, $exp – 1);<br />

}<br />

return 1;<br />

}<br />

Me kasutame valemit x * x (y-1)<br />

Veebirakenduste loomine V - 35


<strong>PHP</strong> – Massiivid<br />

• Lihtsad massiivid<br />

– Võivad sisaldada eri tüüpi elemente<br />

– Initsialiseerimine<br />

Elementide ”liitmine” massiivile:<br />

$countries[] = ”cr”;<br />

$countries[] = ”de”;<br />

$countries[] = ”us”;<br />

Elementide pistmine määratud aukudesse:<br />

$countries[0] = ”cr”;<br />

$countries[1] = ”de”;<br />

$countries[2] = ”us”;<br />

Elementide pistmine määratud aukudesse suvalises järjekorras:<br />

$countries[50] = ”cr”;<br />

$countries[20] = ”de”;<br />

$countries[10] = ”us”;<br />

$countries = array(”cr”, ”de”, ”us”);<br />

$countries = array(1 => ”cr”, 7 => ”de”, ”us”);<br />

– Elementide arvu saab teada funktsiooniga count($massiiv)<br />

Veebirakenduste loomine V - 36


<strong>PHP</strong> – Massiivid<br />

• Massiivi läbi käimine<br />

$countries = array(”cr”, ”de”, ”us”);<br />

$num_elems = count($countries);<br />

for ($idx = 0; $idx < $num_elems; ++$idx) {<br />

echo(”$countries[$idx] \n”);<br />

}<br />

• Massiivi elemendi eemaldamine<br />

if ($countries[$idx] == ”cr”) unset($countries[$idx]);<br />

• Järjestamata massiivid<br />

$countries[50] =”cr”;<br />

$countries[20] =”de”;<br />

$countries[10] =”us”;<br />

$countries[] = ”uk”; // Saab indeksiks 51<br />

$key = key($countries);<br />

$value = current($countries);<br />

echo(”Element $key equals $value”);<br />

Veebirakenduste loomine V - 37


<strong>PHP</strong> – Massiivid<br />

• Järjestamata massiivid (jätkub)<br />

reset($countries); // Tagasi esimese elemendi juurde<br />

while (list($key, $value) = each($countries)) {<br />

echo(”Element $key equals $value\n”);<br />

}<br />

• Funktsioonid next() ja prev() – neid on<br />

mõttekas hoopis vältida<br />

• Funktsioon array_walk()<br />

function println($s) {<br />

echo ”$s\n”;<br />

}<br />

$countries = array(”ca”, ”cr”, ”de”, ”us”);<br />

array_walk($countires, $println);<br />

Veebirakenduste loomine V - 38


<strong>PHP</strong> – Massiivid<br />

• Stringiga indekseeritavad massiivid<br />

$countries[”ca”] = ”Canada”;<br />

$countries[”cr”] = ”Costa Rica”;<br />

$countries[”de”] = ”Germany”;<br />

$countries[”uk”] = ”United Kingdom”;<br />

$countries[”us”] = ”United States”;<br />

$countries = array(”ca” => ”Canada”,<br />

”cr” => ”Costa Rica”,<br />

”de” => ”Germany”,<br />

”uk” => ”United Kingdom”,<br />

”us” => ”United States”);<br />

• Massiivi läbimise võimalused<br />

while (list($key, $val) = each($countries)) {<br />

echo ”Element $key equals $val\n”;<br />

}<br />

$arr = each($countries);<br />

$arr on 4-elemendiline massiiv (index 0: value ca; index 1: value<br />

Canada; index ”key”: value ca; index ”value”: value Canada)<br />

Veebirakenduste loomine V - 39


<strong>PHP</strong> – Massiivid<br />

• Mitmemõõtmelised massiivid<br />

$continents = array(”Europe” => array(”de”, ”uk”),<br />

”North America” => array(”ca”, ”cr”, ”us”));<br />

echo($continents[”Europe”][1]); // Trükib ”uk”<br />

echo($continents[”North America”][2]); // Trükib ”us”<br />

• Massiivi läbimise võimalused<br />

while (list($key1, $val1) = each($continents)) {<br />

echo ”$key1:\n”;<br />

}<br />

while (list($key2, $val2) = each($continents[”$key1”])) {<br />

echo ”- $val\n”;<br />

}<br />

Veebirakenduste loomine V - 40


<strong>PHP</strong> – Massiivid<br />

• Sorteerimise võimalused<br />

– Kasutades sort()/rsort() funktsiooni (sorteerib numbrite ja tähtede<br />

järjekorras)<br />

– Kasutades asort()/arsort() funktsiooni (jätab indeksid samaks)<br />

– Kasutades ksort() – sorteerib võtmete (key) järgi<br />

– Kasutades usort() – temale võib kaasa anda oma sorteerimisfunktsiooni<br />

• Sorteeritud elementide uuesti laiali paiskamine<br />

– Kasutades shuffle() koos range()-ga<br />

// Loome massiivi vahemikus 1 .. 100<br />

$ints = range(1, 100);<br />

// Annab juhuslike arvude generaatorile algväärtuse<br />

srand(time());<br />

shuffle($ints);<br />

Veebirakenduste loomine V - 41


<strong>PHP</strong> – Objektid<br />

• <strong>PHP</strong> pole päris tõeline objekt-orienteeritd keel –<br />

ta küll lubab andmeid kapseldada ja objektide põlvnevust kuid ei paku<br />

andmete kaitstust<br />

class Session {<br />

var $sqlhost = ”localhost”;<br />

var $sqluser = ”phpexample”;<br />

var $sqlpass = ”opensource”;<br />

var $sqldb = ”sessions”;<br />

var $linkid;<br />

var $userid;<br />

var $seshid;<br />

var $expire_time = 990;<br />

}<br />

// Meetodid<br />

function Session($localSeshID, $localUserID=0) {<br />

$this->seshid = $localSeshID;<br />

$this->userid = $localUserID;<br />

...<br />

}<br />

function VerifyTime() {<br />

...<br />

}<br />

...<br />

// Konstruktor<br />

Veebirakenduste loomine V - 42


<strong>PHP</strong> – Objektid<br />

• <strong>PHP</strong>s on kõikide meetodite ja muutujate poole<br />

pöördumine public-tüüpi (ligi pääsevad kõik)<br />

[OOP defineerib veel private (ligi saab vaid sama objekt); protected (ligi<br />

saab sama ning sellest põlvnev)]<br />

• Objekti kasutamine e. instantsi loomine<br />

<br />

Veebirakenduste loomine V - 43


<strong>PHP</strong> – Objektid<br />

• Objekti hävitamine on automaatne – destruktor puudub<br />

Kui on konstruktoris tehtud midagi, mis vajab algoleku taastamist (ühendus<br />

andmebaasiga tuleb sulgeda, vms), siis tuleb ise funktsioon luua ning see<br />

välja kutsuda<br />

<br />

Veebirakenduste loomine V - 44


<strong>PHP</strong> – Objektid<br />

• Objektide põlvnemine<br />

class Cart extends Session {<br />

// lisamuutujate defineerimine<br />

var $userdata;<br />

function Cart($this->seshid, $this->userid=0) {<br />

$this->Session($this->seshid, $this->userid);<br />

if ($this->errno) {<br />

return;<br />

}<br />

...<br />

}<br />

// Uus konstruktor<br />

// Vana objekti konstruktor<br />

}<br />

function CreateTable() {<br />

$query = ”CREATE TABLE user”.$this->userid;<br />

$query .= ” (key varchar(20) PRIMARY KEY,”;<br />

$query .= ” value text(255))”;<br />

$result = $mysql_query($query);<br />

if (!$result) {<br />

...<br />

return;<br />

}<br />

}<br />

...<br />

Veebirakenduste loomine V - 45


• <strong>PHP</strong> Kodulehed<br />

– http://www.php.net<br />

– http://www.zend.com<br />

• Õpetused<br />

– http://www.phpbuilder.com<br />

– http://www.ifconnection.de/~tm/ (PDF Library)<br />

– http://php.netvision.net.il/browscap/ (Browser Capability)<br />

Veebirakenduste loomine V - 46


Küsimused?<br />

=============== < ? ! ? > ================<br />

Veebirakenduste loomine V - 47

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!