PHP nyelv Mari Dániel
Miről lesz szó? PHP nyelvről általánosan Történelme PHP használata Nyelvi elemek Típusok, típuskonverziók, változók, … Vezérlési szerkezetek Függvények
A PHP nyelv Szkript nyelv Dinamikus weboldalak készítése, HTML-be ágyazható Szerver oldali futtatás Interpretált nyelv Imperatív és objektumelvű programozás támogatása Kompatibilis a legtöbb mai szerverrel Könnyen tanulható Hatékony adatbázis kezelés Nyílt forráskódú Ingyenes
Történelem 1994 – megszületése (Rasmus Lerdorf) PHP = Personal Home Page 1995 – PHP első nyilvános változata 1997: PHP 3 Erős kiterjeszthetőség Objektum orientáltság megjelenése Hatékonyabb nyelvi elemek, szintaxis 1999: Zend Engine -> 2000: PHP 4 2004 – PHP 5 Zend Engine II Fejlettebb OO, jobb teljesítmény
PHP használata A kód a szerveren fut Szerveroldali, parancssori, grafikus alkalmazás .php kiterjesztés Nincs főprogram Install: XAMPP (LAMP, WAMP..) X-Cross platform, A-Apache, M-MySQL, P-PHP, P-Perl
PHP- HTML A PHP HTML-be ágyazható <?php //kód ?> <? ?> - Nem ajánlott ezt használni! Általában: <?=$valtozo?> == <?php echo $valtozo; ?> <script language=”php”> </script> <% //ASP stílus is megy %> Pl: <?php echo „Hello World” ?>
Hello World <html> <head> <title> Hello World </title> </head> <body> <?php echo”Hello World”; ?> </body> </html>
Nyelvi elemek ASCII karakterkészlet Whitespace-ek választják el a lexikális elemeket Az utasításokat pontosvessző (';') választja el A nyelv case sensitive (kiv.: true,false, null, …) Megjegyzések // vagy # - egysoros /* */ - többsoros
Nyelvi elemek II Azonosítók Deklarálásra nincs szükség Változó $-al kezdődik Deklarálásra nincs szükség Első alkalommal amikor értéket adunk egy változónak létrejön Érték nélkül: NULL Neve betűt, számot és ‚_’-t tartalmazhat Többféle numerikus literál is előfordulhat $a1 = 1234; # decimális szám $a2 = -123; # negatív egész szám $a3 = 0123; # oktális egész szám (decimálisan 83) $a4 = 0x12; # hexadecimális egész szám (decimálisan 18) $a5 = 12.3; # lebegőpontos tört szám $a6 = 1.23e2; # másik megadási mód $a7 = 5.8E-1; # 0.58 másik megadása Sztringliterálokat ” illetve ’ idézőjelekkel határoljuk. ” $valtozo ” - kiértékelődik Speciális karaktereket \ jellel írhatunk le (p.: \n)
Típusok, típusszerkezetek Skalár Integer, Boolean, Float, Double, String Összetett típusok Array, Class Speciális típusok Null Resource Pl: adatbázis link Gyengén típusos nyelv-> a változó a típusát az értékadás alapján kapja $a=5; //a integer $a=”10” //a string
Típuskonverzió Műveletek végrehajtásakor automatikus konverzió (float előnyben aztán integer) $a=”10”; $a+=2; //$a integer és értéke 12 $a+=3.5; //$a float és értéke 15.5 $a+=”12 alma”; //$a float és értéke 27.5 $a=5+”10 valami”; //$a integer és értéke 15 C-hez hasonlóan: (típus) $a=5; $b=(boolean)$a $s=”$a”; //ekvivalens $s=(string)$a;-val settype($var, $type) $s=”5 sor”; settype($s, ”integer”); //$s integer és értéke 5
Tömbök Kulcs - érték párok Létrehozás Többdimenziós Kulcs Integer és String lehet Létrehozás Explicit: $t[3]=5; $t = „tomb”; Array() segítségével $t = array(1,2,3,4); $t = array(0=>1, 1=>2, 2=>3, 3=>4); Többdimenziós $t[][]; Asszociatív: $[„kulcs”]=„ertek”;
Tömbök II Tömb végéhez adás: $t[] = „vegere”; Count(); Sok tömb művelet Array_merge – két tömb egyesítése Array_push – elemek hozzáadása Array_shift – első elem eltávolítása Sort – tömb rendezése Asort – érték szerint rendezés Ksort – kulcs szerint rendezés A tömbök használhatóak más adatszerkezetekként is Pl. veremként: array_push(), array_pop(), stb.
Példa – count() Jó: Rossz: Megoldás: foreach $felhasznalok = array ("Berci", "Marci", "Ödön", "Télapó"); $felhasznalok[count($felhasznalok)-1]; Rossz: $tomb = array("Ecc, pecc"); // Egyelemű tömb! $tomb[2] = "kimehetsz"; print "Az utolsó elem: " . $tomb[count($tomb)-1]; Megoldás: foreach
Operátorok Aritmetikai: x + y Értékadó: x = y ++x, x++, --x, x-- +, -, *, /, %, -(negálás), .(konkatenáció) Értékadó: x = y +=, -=, *=, /=, %=, .= ++x, x++, --x, x-- Összehasonlító: x==y !=(<>), ===, !==, >, >=, <=, < Logikai: x and y or, xor, &&, ||, ! Különleges operátor az instanceof, amely típusba tartozásra tesztel Végrehajtás operátor pl.: `ls`
Operátorok II Tömb operátorok: Unió (x+y): teljes x és hozzá y azon kulcsai, melyek nincsenek x-ben Összehasonlítás (x==y): $a = array(”alma", ”korte"); $b = array(1 => ”korte", "0" => ”alma"); ($a == $b); // bool(true) ($a === $b); // bool(false) !=, <>, !==
Változók Az első használatkor jönnek létre Nem kell típust megadni az isset(<név>)függvény megadja, hogy tárol-e értéket értékét törölni lehet az unset(<név>)függvénnyel Előre definiált $GLOBALS-a globális változók nevei $_SERVER–változók, amelyeket a webszerver állított be $_GET-HTTP GET kérés által létrehozott változók $_POST-HTTP POST kérés által létrehozott változók $_COOKIE-HTTP sütikből (cookies) származó változók $_FILES-HTTP post fájlfeltöltés által létrejövő változók $_REQUEST-HTTP GET, POST és COOKIE bementekből származó változók $_SESSION-a szkript munkamanetéhez rendelt változók
Konstansok Megadásuk: define(<név>,<érték>) A konstansok mindenhonnan elérhetőek Csak skalár lehet konstans!
Láthatóság PHP 4 típust különböztet meg: Lokális Statikus Lokális, globális, statikus, paraméter Lokális Csak az aktuális függvényen belül érhető el Törlődik ha a függvény működése befejeződik Statikus Lokális változók, melyek megőrzésre kerülnek a függvényük befejeztével Amikor a függvény újra meghívódik az előző értékre fog emlékezni a program
Láthatóság II Globális Paraméter Minden függvényeken kívül bevezetett változó Függvényeken kívül bárhol elérhetőek Függvényeken belül: global kulcsszóval $a=10; Function test() { echo global $a; } $GLOBALS tömb: bárhol elérhető asszociatív tömb, mely a globális változókat tárolja $GLOBALS[‘a’] = global $a Paraméter Lokális változó mely a hívó kódból kapja az értékét
Vezérlési szerkezetek Programblokk: { … } Használhatjuk a „:”-ot, ekkor kell egy lezárás a végére Pl: <?php if($user.loggedIn()): ?> <h3>Üdvözlöm kedves <?=$user.name?> <?php endif; ?> Elágazások Egyágú: if (feltétel) utasítás; else utasítás; Többágú: switch(érték) { case érték: utasítások; break; default: utasítások; }
Vezérlési szerkezetek II Ciklusok: While(feltétel) {utasítások} Do { utasítások } while (feltétel); For(kezdőérték;feltétel;inkrementálás) {utasítások} Foreach(tömb as változó) { utasítások} Foreach (tömb as kulcs=>érték) { utasítások} Vezérlésátadó utasítások: Break -> ciklus terminálása Switch is ciklusnak minősül! Continue -> ciklus léptetése
Függvények Function szóval vezetjük be Visszatérési értéket a return-el jelöljük Pl: function osszead($a,$b) { return $a+$b;} Meghívása: osszead(4,5); Paramétereknek lehet kezdőértéket adni (nem kell típust megadni) Változó számú paraméter is használható $db=func_num_args(); $i = func_get_args(0-tól (db-1)-ig); Összetett adat is visszaadható Nincs lehetőség túlterhelésre, felüldefiniálásra Minden függvény globális
Függvények II Feltételes definiálás: Dinamikus függvények If(feltétel) { function fv() {echo „A”;}} else { function fv() {echo „B”;}} Dinamikus függvények Function kisebb($a,$b)… $fv = „kisebb”; echo $fv(1,2); $fv = „nagyobb”;… $fv = create_function(‚$a,$b’ , ’return $a+$b;’);
Függvények III Paraméterátadás módja: Minden függvény globális Alapértelmezetten érték szerinti paraméterátadás Lehetőségünk van cím szerinti paraméterátadásra, az „&” jel használatával Function novel(&$szam) {$szam++;} Minden függvény globális function kul_fv() { function bel_fv() { echo "Engem ne hívj, amíg kul_fv()-t nem hívtad!\n"; } bel_fv(); //Fatal error: Call to undefined function bel_fv() kul_fv(); bel_fv(); kul_fv(); //Fatal error: Cannot redeclare bel_fv()
Köszönöm a figyelmet!