• Nem Talált Eredményt

3. Lecke: Szerveroldali programozás PHP nyelven

3.5 A PHP állományok

3.5.5 A PHP-alkalmazás

A teljes webalkalmazás szinte sohasem egyetlen PHP-fájlból áll. A prog-ramkódot az alkalmazás tervezésekor fölmért feladatoknak és várt állapotoknak megfelelően több különálló fájlban tároljuk. A kliensoldali felület mindig az alkalmazás aktuális állapotának, és a felhasználó által kiadott utasításnak meg-felelő PHP-állományt kéri a szervertől. Más fájlban tárolt kód állítja elő például az alkalmazás címoldalát, a bejelentkező felületet, vagy a felhasználói profil beállítására alkalmas oldalt. Az is jellemző gyakorlat, hogy az alkalmazás több különböző pontján is szükséges műveleteket függvényekkel valósítják meg, és a függvényeket különálló PHP-állományokban tárolják.

Az ilyen módon tagolt kód esetén gyakran van szükség arra, hogy több, kü-lönálló PHP-állományt ideiglenesen egy egységbe fűzzünk, és az így kapott kód-dal kezeljük egy állapotot. A különálló fájlok ideiglenes összefűzésére használ-hatók az include, az include_once a require és a require_once utasítások.

Az include, és a require utasításoknak egyaránt a csatolandó PHP-fájl útvonalát és nevét kell megadni paraméterként. Amikor az értelmező include utasításhoz ér, akkor felfüggeszti az eredeti kód végrehajtását, és paraméterként megadott állomány feldolgozásával folytatja a munkát. Amikor végzett a becsatolt feldolgozásával, visszatér az eredeti kódba és abban dolgo-zik tovább.

A becsatolt fájlok kiterjesztése bármi lehet (akár HTML is), ugyanis az include végrehajtása előtt az interpreter mindig HTML módba vált, visszaté-réskor pedig ismét PHP-módban folytatja a munkát. Pontosan ezért az include-dal a csatolt állományban világosan jelezni kell a PHP-kódok he-lyét! A jelölőkre akkor is szükség van, ha az include állományban csak PHP-kód van.

Előfordulhat, hogy az értelmező nem találja az include, vagy a require utasításokban megadott fájlt. A két utasítás között az ilyen esetek kezelésében van különbség. Az include ugyanis ilyenkor csak figyelmeztetést küld, de a program folytatódik (lásd később: a Hibakeresés, hiba- és kivételkeze-lés leckében), a require azonban megszakítja a program futását, és hibaüze-netet küld.

include/a.php include/b.php include/c.php

60 Szerveroldali programozás PHP nyelven

Ettől eltekintve a két utasítás azonos módon működik. Végrehajtásuk ab-ban megegyezik, hogy alkalmasak ugyanannak a kódnak a többszöri beilleszté-sére is.

Tételezzük fel, hogy három különböző kódot tartalmazó PHP-fájlunk van: a.php, b.php és c.php.

A c.php olyan kódot tartalmaz, amelyre az a.php és a b.php fu-tásához is szükség van.

Az a.php kódját is úgy írjuk meg, hogy tartalmazzon egy c.php-t beillesztő sort, és a b.php-t is hasonlóan készítjük el.

Tegyük fel, hogy az a.php-nek nem csak a c-re hanem a b.php-re is szüksége van, tehát valahol tartalmaz egy b.php-t csatoló sort is.

Ezzel a lépéssel c kódja kétszer is bekerül az a-ba, hiszen közvetle-nül, és b-n keresztül is csatoltuk.

18. ábra Az include működése

Ha meg akarjuk előzni egy kód többszöri beillesztését (egyes esetekben er-re feltétlenül szükség van), akkor használhatjuk az include_once és a require_once utasításokat. Ezek úgy működnek, mint az include, vagy a require azzal a különbséggel, hogy mielőtt elvégeznék a műveletet, megvizs-gálják, hogy kódot korábban nem illesztettük-e be. Ha igen, akkor nem ismétlik meg a csatolást.

include_once/a.php include_once /b.php include_once /c.php

Ha biztosak akarunk lenni abban, hogy nem történik többszörös beillesz-tés, akkor használjuk az include_once, require_once utasításokat!

 Hasonlítsa össze a webhely include, és include_once mappái-ban lévő fájlokat! Nézze meg az két a.php futásának ered-ményét!

3.6 ÖSSZEFOGLALÁS, KÉRDÉSEK

3.6.1 Összefoglalás

Mai leckénkben a PHP történetének rövid ismertetése után a szerveroldali programozásra használt nyelv lehetséges szoftverkörnyezetével ismerkedtünk meg. Letöltöttünk és telepítettünk a WAMP környezet kialakítására alkalmas csomagot, amelynek eredményeként számítógépünkön működőképes Apache webszerver és MySQL adatbázis-kezelő rendszer is rendelkezésre áll. A webszerver dokumentumkönyvtárában saját mappát hoztunk létre, amely al-kalmas a példaállományok tárolására.

A szerverek telepítése után üzembe helyeztük a CodeLobster nevű IDE-alkalmazást, amely kiváló lehetőségeket biztosít a programkódok megírására és kipróbálására.

A lecke második felében a PHP-program szerkezetéről, a PHP- és HTML-kódok elkülönítéséről tanultunk. Megtanultuk, mit jelent a PHP és HTML feldol-gozási mód, hogyan jelezhetjük a PHP-kód kezdetét és végét, hogyan állítja elő a PHP-interpreter a kimenetet.

Megtanultuk az alapvető szintaktikai előírásokat, megismertük az adatok kiírására alkalmas echo és print utasításokat, végül megtanultuk, hogyan lehet összekapcsolni egymással a több állományra tagolt kód részleteit.

62 Szerveroldali programozás PHP nyelven

3.6.2 Önellenőrző kérdések

1. Mi történik, ha a böngésző PHP kiterjesztésű fájlt kér a webszervertől?

 A webszerver átadja a fájlt a PHP-interpreternek és csak a visszakapott kimenetet küldi el a böngészőnek.

2. Mit jelent a WAMP rövidítés?

 A Windows+Apache+MySQL+PHP szoftverkörnyezetet.

3. Hogyan értelmezi a PHP-interpreter a PHP-állományokat?

 Mindig HTML módban kezdi a feldolgozást, és mindad-dig a kimenetre másolja a szöveget, amíg nem talál kez-dő PHP jelölőt. Ilyenkor PHP-módba vált, értelmezi és végrehatja az utasításokat, és csak az echo illetve print utasításokkal kiírt szöveget küldi a kimentre. A befejező PHP-jelölő elérése után újra HTML-módba vált az értelmező. Ha több PHP-jelölőpár van a prog-ramban, akkor a váltás minden alkalommal megtörténik.

4. Írhatunk-e egy sorba több PHP-utasítást?

 Igen. Az utasításokat pontosvesszőkkel kell zárni, de egy sorban több ilyen utasítás is lehet. Ugyanakkor ér-demes kerülni az ilyen megoldást, és célszerű jól átlát-ható, világosan tagolt kódot írni. Ettől a programunk nem lesz hatékonyabb, de könnyebben tudjuk olvasni a kódot. A megfelelő tagolás mellett érdemes megjegy-zéseket is tudunk elhelyezni a programban.

5. Mi a különbség az include és a require utasítások között?

 Az include csak figyelmeztetést küld, ha nem találja a megadott fájlt, a require hibaüzenetet ad és le is állítja a program futását.

Feladat

4. LECKE: LITERÁLOK, VÁLTOZÓK,