28.04.2015 Views

PHP Keelereeglid

PHP Keelereeglid

PHP Keelereeglid

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<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!