PHP II.
Kommentek
Több lehetőség is van kommentek megadására, mint ahogy a példában is látható.Az egyik különleges komment az úgynevezett DocBlock. Ez azért különleges, mert reflection segítségével elérhető.
Innentől kezdve futás időben feldolgozhatjuk ezeket a szövegeket, és például (a java-ból már ismert) annotációkat is kezelhetünk.
Csak említés szintjén: a PHP nyelvi szinten nem támogatja az annotációkat, de ezzel a trükkel mégis használhatóak. Hátránya, hogy a reflection + szöveg feldolgozás lassú, ezért érdemes kódot generálni, majd egyből include segítségével betölteni php kódot.
Változók
Változók nevét a $ jellel kell kezdeni. Ezután az első karakter lehet a-z,A-Z,_ a többi pedig a-z,A-Z,_,0-9.A PHP egy gyengén típusos nyelv, ezért nem kell megadni a változók típusát. Futás időben dől el, hogy éppen mi lesz típusa.
Lehet változóra referenciát is tárolni az & jel segítségével: $v2 = &$v1;.
PHP-ben a változók scope-okhoz (hatókör) vannak kötve.
Egy fájlban létrehozott változók a globális scope-ba kerülnek.
Függvényen belül lokális scope-ok vannak. Az itt létrehozott változók nem érhetőek el kívülről.
Alapból a globális változók sem használhatóak. A global kulcsó használatával, vagy a $GLOBALS nevű szuperglobális változó segítségével el lehet érni a globális változókat is lokális scope-okból.
Függvényen belül létre lehet hozni statikus változókat, hasonlóan mint C-ben a static kulcsszóval. Ezek a többszöri hívás során megtartják az értéküket.
A PHP dinamikus nyelv, így még az is dinamikusan határozható meg, hogy melyik változót akarjuk használni. Ezt változó változónak nevezik.
A lényege: a változó nevét egy string-ként tárolhatjuk, majd amikor akarjuk, felhasználhatjuk a string-ben tárolt azonosítót a változó elérésére.
Változók
Beépített változók
A PHP rendelkezik néhány beépített változóval, melyből elérhetünk minden fontos adatot.Ezek szuperglobális változók, tehát a kód bármely részéről elérhetőek. A lényegesebbek:
- $_SERVER : futtatókörnyezettel kapcsolatos paraméterek
- $_GET : a kérés paraméterei az url végéről
- $_POST : a kérés paraméterei a kérés törzséből
- $_FILES : a kéréshez csatolt fájlok adatai
- $_REQUEST : a kérés összes paramétere: $_GET, $_POST, $_COOKIE
- $_SESSION : az aktuális menethez tárolt szerver oldali adatok (session kezelés később)
- $_ENV : a környezeti változók
- $_COOKIE : a kérésben megkapott sütik
- $argc : php parancssori argumentumok száma
- $argv : php parancssori argumentumok
Konstansok
A define függvénnyel létrehozhatunk konstansokat, melyek a program futása során állandóak maradnak.Ezek a konstansok elérhetőek scope-től függetlenül bárhonnan, valamint nem kell a $ jelet kitenni eléjük.
A define harmadik paramétere azt adja meg, hogy ne legyen érzékeny a kis- és nagybetűkre a konstans. Alapértelmezetten érzékeny.
Továbbá a const kulcsszóval is létrehozhatunk konstansokat.
A PHP további mágikus konstansokat is biztosít a számunkra.
Kiíratás
Kiíratásra az alábbi parancsokat használják a leggyakrabban (kiemelve a sajátosságokat):- echo : több paramétere is lehet, melyeket sorban kiír
- print : visszatérési értéke konstans 1, így használható kifejezésekben
- die : befejezi a program futását, a paraméterül kapott értéket kiírja, kivéve ha integer, olyankor az lesz a program kilépési kódja
- exit : ugyan az mint a die
- print_r : rekurzívan kiírja a paraméter értékét
- var_dump : hasonló mint a print_r, de típus információkat is kiír
A jelenlegi PHP verziók már intelligensek annyira, hogy ilyet ne csináljanak, csak a régi rendszereknél jelenthet gondot.
Típusok
A PHP az alábbi típusokat támogatja (kiemelve a fontos dolgokat):- boolean : true, false lehet az értéke
- integer
- nincs előjel nélküli egész
- nincs egész osztás; egész osztás megvalósítása: intdiv($a, $b)
- nincs overflow (lebegőpontosra konvertálódik minden, ami a tartományon kívülre megy)
- float/double : csak 1 lebegőpontos típus van, dupla pontosságú általában, de architektúra függő
- string
- tömb
- dinamikus méretű
- univerzális, vegyesen lehetnek benne a típusok
- valójában kulcs-érték párok (mint egy map)
- a kulcs lehet: integer vagy string
- a tárolt érték típusa bármi lehet
- új elem beszúrára a [] operátor segítségével
- rengeteg beépített tömb művelet
- tömb operátorok
- object : osztályból példányosított objektum, beépített osztály: stdClass (olyan mint java-ban az Object, de nem ősosztálya mindennek)
- resource (erőforrás) : pl fájl, adatbázis kapcsolat
- null : speciális típus, melynek egy értéke lehet: NULL
Vezérlési szerkezetek
A többi nyelvben már megismert vezérlési szerkezetek megtalálhatóak a PHP nyelvben is.Amit érdemes kiemelni az a foreach mely tömbök bejárását könnyíti meg, illetve egy objektum publikus adattagjait is bejárhatjuk vele.
Továbbá az IF szerkezetben az ELSE IF írható egybe is: ELSEIF, mely egy lefoglalt kulcsszó a nyelvben.
Vezérlés
Feladat
Készíts egy egyszerű számológépet (amely bekér két számot és egy műveleti jelet -a négy alapművelet közül- és kiírja az eredményt).Feladat
Készíts egy egyszerű blog oldalt, ahol blog bejegyzések vannak kilistázva egy-egy képpel.A tartalom legyen statikus, és a webszerver szolgálja ki.
Feladat
Az adatokat egy tömbben tárold le, és a "kiíró-ciklus" ezt bejárva írja ki a bejegyzéseket.Az alábbi adatokkal rendelkezzen egy bejegyzés:
- cím: string
- szöveg: string
- dátum: DateTime
- hozzászólások száma: szám
- értékelés: lebegőpontos szám
- kiemelt bejegyzés: boolean
- címkék: tömb