PHP alapok
A PHP története A PHP első változatát, amely néhány webalkalmazáskészítést segítő makrót tartalmazott Rasmus Lerdorf készítette 1994-ben. Ezen eszközöket együttesen a Personal Home Page Tools névvel azonosították. Gyakran: Hypertext Preprocessor Az Apache (jelenleg a legnépszerűbb kiszolgáló a világon)és MySQL-támogatás megerősítette a PHP pozícióját. Az Apache-hoz a PHP 3.0 már modulként illeszthető volt A MySQL igen hatékony, ráadásul ingyenes SQL adatbázisrendszer, amelyhez a PHP átfogó támogatást nyújt Jelenleg a PHP 5.4.14 verziónál tart, az aktuális támogatási információkat a www.php.net oldalon lehet megtalálni
PHP kód írása
PHP kódot mindig a következő módokon kezdhetjük ill. zárhatjuk: Hagyományos: <?php … ?> Rövid: <? … ?> Script elem: <SCRIPT LANGUAGE="PHP"> … </SCRIPT> Erősen ajánlott a hagyományos mód használata!
Változók
A változók különleges tárolók, amikben értéket helyezünk el A változók egy dollárjelből ($) és egy tetszőlegesen választott névből tevődnek össze. A név betűket, számokat és aláhúzás karaktereket (_) tartalmazhat (számmal azonban nem kezdődhet!).
Szóközöket és más olyan karaktereket, amelyek nem számok vagy betűk, nem. Íme néhány érvényes változónév: $a; $egy_hosszabb_valtozonev; $elalszom_zzzzzzzzzzzzzz;
A változók adatokat , számokat, karakterláncokat, objektumokat, tömböket vagy logikai értékeket tárolnak. Tartalmuk bármikor módosítható, de: HATÓKÖR! Létrehozáskor általában rögtön értéket is szoktunk adni a változónak (PHP:gyengén típusos nyelv): $szam1 = 8; $szam2 = ”23”; A karakterláncokat mindig (egyes vagy kettős) idézőjelbe kell tenni. (”…”, ’…’)
Kiíró parancs a PHP-ben
kiiratás: echo(), vagy print():
echo ”Helló világ!”;
print("szöveg, amit ki szeretnénk írni"); print "szöveg, amit ki szeretnénk írni";
PHP-vel nemcsak látható szöveget írhatunk ki az eredmény oldalra, de HTML kódot is. A következő két kódrészlet eredménye ugyanaz:
<HTML> <BODY> <?php print "valami"; ?> </BODY> </HTML>
<HTML> <?php print "<BODY>"; print "valami"; print "</BODY>"; ?> </HTML>
Változók kiiratása <?php $szam = 15; $szoveg = ”valami”; ?> <?php print $szoveg ?> A fenti kód eredménye: valami
<?php $eletkor = 23; print "Én most $eletkor éves vagyok.”; ?> A fenti kód eredménye: "Én most 23 éves vagyok."
Szövegrészek és változók összefűzése
A PHP-ben a szövegösszefűzés (konkatenáció) jele: . <?php print "Én most" . " 23 éves" . " vagyok.”; ?>
Szövegrészeket és különböző típusú változókat nyugodtan összefűzhetünk, az eredmény mindig szöveges típusú lesz: <?php $eletkor = 23; $szoveg = "éves"; print "Én most". $eletkor. $szoveg." vagyok."; ?>
Konstansok
Olyan változó, aminek az értéke állandó :) define("a","alma"); A define parancs az első paraméterként megadott névvel létrehozza a konstanst, és a második paraméterként megadott értéket rendeli hozzá. A define parancs bárhol használható, a definiált konstansok pedig globális hatókörűek, azaz mindenhol, így a függvények belsejében is elérhetők.
Megjegyzések A PHP egysoros megjegyzései: //megjegyzés #megjegyzés
A többsoros megjegyzések :(/*)megjegyzés (*/)
Kommentezés!
Típusok Típus
Leírás
Példa
integer
egész szám
12
double
lebegőpontos szám (valós szám)
9.967
string
szöveg vagy karakterlánc
"Hello"
boolean
logikai (értéke igaz/true vagy hamis/false)
true
array
tömb
később
object
objektum
később
* A változó típusának vizsgálata és módosítása
A változó típusának meghatározására: gettype() függvény:
<?php $proba=3.14; print "A(z) '$proba' típusa: "; print gettype($proba); //kiírja, hogy double ?>
settype() <?php settype($proba,"string"); //karakterlánccá alakítja print "A(z) '$proba' típusa: "; print gettype($proba); //kiírja, hogy string ?>
settype()
<? settype($proba,"integer"); //egésszé alakítja print "A(z) '$proba' típusa: "; //kiírja, hogy A(z) '3' típusa: print gettype($proba); //kiírja, hogy integer ?>
Kifejezések
A kifejezés a függvények, értékek és operátorok (műveletjelek) olyan együttese, amely értéket határoz meg. Általánosságban azt mondhatjuk, hogy ha értékként használhatunk valamit, akkor az kifejezés.
Operátorok
Az operátor (műveletjel): jel vagy jelsorozat, amelyet értékek összekapcsolására használunk
Operátorral valamilyen műveletet végezhetünk, amely általában új értéket eredményez
Általában: operandus operátor operandus
Hozzárendelő operátor: =
A $kor = 29; utasítás a baloldali változóhoz a jobb oldal értékét rendeli.
Egy utasításban több hozzárendelő operátort is használhatunk: $szam=$kor=29;
Összehasonlító operátorok: == != === !== < > <= >=
Az összehasonlító operátorok két értéket hasonlítanak össze, és hibákhoz vezethetnek a PHP automatikus típuskonverziója miatt. A hamis logikai érték és a 0 megkülönböztetésére alkalmasak a === vagy a !== operátorok, ugyanis a == ezen értékeknél nem a várt eredményt adja.
Összehasonlító operátorok: == != === !== < > <= >= Operátor
Jelentés
Igaz
Hamis
==
egyenlő érték
4==4
3==4
!=
nem egyenlő érték
3!=4
4!=4
===
egyenlő érték és egyező típus
0===0
0===false
!==
nem egyenlő érték vagy nem egyező típus
0!==false
0!==0
<
kisebb
3<4
6<4
>
nagyobb
5>4
5>7
<=
kisebb vagy egyenlő
4<=4
5<=4
>=
nagyobb vagy egyenlő
9>=3
6>=8
Aritmetikai operátorok: + - * / %
+: összeadás -: kivonás *: szorzás /: osztás %: maradékos osztás (modulo) -> A maradékos osztást két lebegőpontos számmal is elvégzi úgy, hogy elhagyja a tizedesjegyeket. A maradékos osztás eredménye mindig egész.
Sztringoperátorok: . .=
Két sztring összefűzéséhez használható a . operátor, míg egy sztring végéhez egy másikat a .= operátorral lehet csatolni. $szin="piros"." "."kék"; //$szin="piros kék" $szin.=" lila"; //$szin="piros kék lila"
Növelő/csökkentő operátorok: ++ --
A ++ (inkrementálás) és -- (dekrementálás) operátorok egyaránt írhatók változók elé (prefix) és mögé (postfix) pl.:
Egyéb hozzárendelő operátorok: += -= *= /= %=
Ezek szintén az egyszerűbb leírást segítik. Például: a $szam += 4 utasítás egyenértékű a $szam=$szam+4 utasítással, a $szam *= 4 utasítás pedig a $szam=$szam*4 utasítással.
Logikai operátorok: ! && || and xor
or
A logikai operátorok logikai értékeken végeznek műveleteket. A következő táblázat a lehetséges logikai műveleteket mutatja be.
Operátor
Név
Igaz, ha
Példa
Eredmény
||
vagy
a bal vagy a jobb operandus igaz
true || false
true
or
vagy
a bal vagy a jobb operandus igaz
true or false
true
xor
kizáró vagy
vagy a bal, vagy a jobb operandus igaz, de csak az egyikük
true xor true
false
&&
és
a bal és a jobb operandus is igaz
true && false
false
and
és
a bal és a jobb operandus is igaz
true and false
false
!
tagadás
az egyetlen operandus hamis
!true
false
* Bináris operátorok: & | ^ ~ << >>
A bitenkénti és (&) eredményében azokon a helyeken lesz 1-es, ahol mindkét operandusban 1es volt. Így az 1-es és a 2-es bitenkénti és-e 0. A bitenkénti vagy (|) eredményében azokon a helyeken lesz 1-es, ahol legalább az egyik operandusban 1-es volt, azaz az 1-es és 2-es esetében az eredmény a bináris 11 lesz, ami 3-at ér.
*
A bitenkénti xor (^) eredményében azokon a helyeken lesz 1-es, ahol a két operandus közül az egyikben és csakis az egyikben 1-es volt. Az 1 ^ 2 szintén a 3-at adja. A bitenkénti tagadás (~) az összes bitet invertálja, azaz ahol 1-es volt, ott 0 lesz, és fordítva.
*
a jobbra tolás (>>) és a balra tolás (<<). Ezek az operátorok meghatározott értékkel eltolják a biteket a megfelelő irányba. Ha a $szam változó értéke 3, akkor a $szam>>=1; utasítás hatására a $szam értéke 1 lesz (a bináris 11-et 1-gyel jobbra tolva a bináris 01-et kapjuk). Ha pedig a $szam<<=2; utasítást nézzük, akkor a $szam a 12vel lesz egyenlő (az 11-ből az 1100-át kapjuk).
* Hivatkozás operátor: &
A hivatkozás operátort változónév elé kell tenni. Ha a $szam változó értéke 4, és kiadjuk a $sz=&$szam; utasítást, akkor a $sz változó ugyanarra a memóriacímre fog mutatni, mint a $szam, szükségképpen az értéke is meg fog egyezni a $szam változó értékével, azaz 4 lesz.
* Hibaellenőrző operátor: @ A @ operátor elrejti a függvények és különböző kifejezések hibáit, ami néhány weboldalon hasznos lehet, hiszen a hibaüzenetek általában a felhasználóknak nem mondanak semmit. A hibaellenőrző operátort a függvénynév elé kell tenni.
Vezérlési szerkezetek
Szekvencia Szelekció Iteráció
Szekvencia
Az utasítások végére ; -t kell tenni. Az utasításokat célszerű külön sorba írni, de ez nem kötelező. Az utasítások tagolt, strukturált elhelyezése igen erősen ajánlott. {…} közé írt utasítások egy utasítás blokkot jelentenek.
Egyágú elágazás
Az if szerkezet alakja: if (kifejezés) { utasítás; // Ha a kifejezés igaz, // akkor az utasítás végrehajtódik. } Ha a kifejezés logikai értéke igaz, akkor a zárójelpárok által meghatározott blokk végrehajtódik. A két zárójel elhagyható, ha a blokk egyetlen utasításból áll.
1.pl.
<?php $szam=2; if ($szam==2) { print "A szám értéke 2"; } //kiírja, hogy A szám értéke 2 ?>
Kétágú elágazás
Az if-else szerkezet alakja: if (kifejezés) { utasítás1; // Ha a kifejezés igaz, // akkor az utasítás1 hajtódik végre. } else { utasítás2; // különben az utasítás2 hajtódik végre. }
2.pl. <?php $szam=2; print "A szĂĄm: $szam<br>"; if ($szam!=0) { print "A szĂĄm reciproka: "; print 1/$szam; } else { print "Nincs reciproka!"; } //kiĂrja, hogy 0.5 ?>
Többágú elágazás
Többágú elágazást létrehozhatunk az előbbi kétágú elágazások egymásba ágyazásával, vagy az elseif kulcsszó használatával, továbbá a switch utasítással
elseif szerkezet
Az if-elseif-else szerkezet alakja: if (kifejezés) { utasítás; } elseif (kifejezés) { utasítás; } else { utasítás; }
Pl.: <?php $hom=120; print "A víz hőmérséklete: $hom °C<br>Halmazállapota: "; if ($hom<0) { print "szilárd"; } elseif ($hom<100) { print "folyékony"; } else { print "gáz"; } //kiírja, hogy gáz ?>
switch utasítás switch ( kifejezés ) { case érték1: u1; // ez történjen, ha kifejezés értéke érték1 break; case érték2: u2; // ez történjen, ha kifejezés értéke érték2 break; default: ud; // ez történjen, ha a kifejezés értéke // egyik felsorolt értékkel sem egyezett meg break; // az ördög nem alszik, jobban járunk, ha kitesszük }
Pl.: <?php $hangulat = "szomorú"; switch ( $hangulat ) { case "boldog": print "Hurrá, jó kedvem van!"; break; case "szomorú": print "Szomorú vagyok."; break; default: print "Sem boldog, sem szomorú nem vagyok, hanem $hangulat."; } ?>
Előltesztelő ciklus while ( feltétel ) { // valamilyen tevékenység } /*Lehet, hogy egyszer sem fut le a ciklus mag*/
Pl.: <?php $szamlalo = 1; while ( $szamlalo <= 6 ) { print "$szamlalo kétszerese ".($szamlalo*2)."<br>"; $szamlalo++; } /* Kiírja a számokat 1-től 6-ig illetve a számok kétszeresét. */ ?>
Hátultesztelős ciklus do { // végrehajtandó tevékenység } while ( feltétel ); /*Egyszer mindenképpen lefut a ciklus mag*/
Pl.: <?php $szam = 1; do { print "Végrehajtások száma: $szam<br>\n"; $szam++; } while ( $szam > 200 && $szam < 400 ); /* Csak egyszer fut le; Kiírja a szöveget és az 1 számot. */ ?>
Számlálós ciklus for ( változó_hozzárendelése; feltétel; számláló_növelése) { // a végrehajtandó tevékenységek }
A számlálós ciklus egy speciális előltesztelős ciklus (megfeleltetésük) for ( változó_hozzárendelése; változó_hozzárendelése; feltétel; while ( feltétel ) számláló_növelése) { { /* a végrehajtandó /* a végrehajtandó tevékenységek */ tevékenységek */ számláló_növelése; } }
Pl.: <?php for ( $szamlalo = 1; $szamlalo <= 6; $szamlalo++ ) { print "$szamlalo kétszerese ".( $szamlalo * 2)."<br>"; } /* Kiírja a számokat 1-től 6-ig illetve a számok kétszeresét. */ ?>
Függvények function fuggveny_nev($parameter1, $parameter2) { // itt van a függvény törzse } /* Ha a függvény paramétereket igényel, a zárójelbe vesszővel elválasztott változókat kell tenni. A változók értékei a függvényhíváskor átadott paraméterek lesznek. A zárójelpárt akkor is ki kell írni, ha a függvény nem vesz át paramétereket. */
Pl.: <?php function nagyHello() { print "<h1>HELLO!</h1>"; } nagyHello(); ?>
Pl.: <?php function sorKiir( $sor ) { print ("$sor<br>\n"); } sorKiir("Ez egy sor"); sorKiir("Ez már egy másik sor"); sorKiir("Ez megint egy új sor"); ?>
Függvény visszatérési értéke
A függvényeknek visszatérési értéke is lehet, ehhez a return utasításra van szükség. A return befejezi a függvény futtatását és az utána írt kifejezést küldi vissza a hívónak.
Pl.: <?php function osszead( $elsoszam, $masodikszam ) { $eredmeny = $elsoszam + $masodikszam; return $eredmeny; } print osszead(3,5); // kiĂrja, hogy "8" ?>