PHP Keelereeglid
PHP Keelereeglid
PHP Keelereeglid
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