a) A php fájlok szerkezete
A php fájlok szöveges állományok, amelyeket a php nyelv értelmezője futtat. Létrehozhatjuk bármilyen egyszerű szövegszerkesztővel, a fájl kiterjesztése konvenciók szerint ".php", azonban valójában ez nem megkötés. Az értelmező a nyitó és záró tag-ek közötti részt tekinti php kódnak, az ezen kívül eső rész egyszerű szövegként kerül kiírásra. A nyelv alapértelmezett nyitó és záró tag-jei a "<?php" és a "?>", valamint a rövidített "<?" és "?>" - ahol ez engedélyezve van. A megjegyzéseket "//" jellel kezdjük soronként, valamint "/*" és "*/" jelek közé tehetjük, ha több soros a megjegyzés. A különböző utasításokat pontosvesszővel (;) zárjuk.
A php fájlokban a nyelv saját függvényeit és osztályait valamint saját magunk által létrehozottakat használhatunk, valamint lehetőségünk van ezeket teljesen mellőzni is, ha a feladat megengedi.
Példa:
-------------------
<?php
/* Ez a program kiírja
a klasszikus "Hello World!"
szöveget. */
echo "Hello World!"; // Ez egy egy soros megjegyzés
?>
-------------------
Megfigyelhetjük a nyitó (<?php) és záró (?>) tageket, közöttük a "hasznos" résszel.
Tanács:
Ajánlatos a fájlban kerülni a többszörös tag nyitás-zárást, mivel ilyenkor az értelmezőt gátoljuk a futásban, emellett nehezebben olvasható a kód, amit írunk.
Rossz példa:
------------------
<html>
<head>
<title>Rossz példa</title>
</head>
<body>
<div>
<?php
echo "Én egy példa mondat vagyok.";
?>
</div>
<div>
<?php
echo "Én egy másik mondat vagyok!";
?>
</div>
</body>
</html>
------------------
Javított változat:
------------------
<?php
echo '<html>
<head>
<title>Jó példa</title>
</head>
<body>
<div>
Én egy példa mondat vagyok.
</div>
<div>
Én egy másik mondat vagyok!
</div>
</body>
</html>';
?>
------------------
b) Változók
A fenti példákból hiányzik valami: az a tulajdonság, amely megkülönbözteti egy statikus szöveges állománytól - semmi nem változik a futtatás során. Ahhoz, hogy igazán hasznos php alkalmazást írjunk, sehogy nem kerülhetjük el a változókat. A változók olyan speciális, adattartalommal bíró logikai egységek, amelyeket tetszés - és a logika korlátai - szerint felhasználhatunk. A változó ismérve a php nyelvben az, hogy "$" jellel kezdődik, amelyet betűkből, számokból, és bizonyos írásjelekből álló rész követ. A pontos tartományt a hivatalos kézikönyv tartalmazza, ajánlatos azonban betartani pár alapvető szabályt:
- A $ jel után NEM ÁLLHAT szám. Pl. "$1alma"
- Nem használhatunk szóköz karaktert. Pl. "$alma korte"
- Habár a nyelv lehetővé teszi a kiterjesztett kódlapok használatát, nem ajánlott. Pl."$körte" helyett inkább "$korte" formában adjuk meg a változó nevét.
- Használjunk beszédes változókat! Sokkal könnyebb lesz utólag a kódot értelmezni, ha a változó nevéből következtethetünk a tartalomra. Pl. "$var1" helyett "$szamlalo_ertek"
- Habár a nyelv nem kéri, próbáljunk törekedni a változó típusossá tételére, esetleg az ellenőrzésére.
FIGYELEM!
Nem minden szintaktikailag helyes változót használhatjuk, mivel a php néhányat előre lefoglalt, ezek listáját a dokumentációban találjuk.
c) Változók típusai
A változók felvehetnek számértéket, szöveget, tömböt, logikai értéket, objektumot, valamint két speciális típust: a NULL-t és az erőforrást (resource).
Példák:
Számértékek (int, float):
$szam_ertek_1 = 1; // Egész szám
$szam_ertek_2 = 1.1; // Tizedes szám
Szöveges értékek (string):
$szoveg_ertek = "Ez egy szöveg."; // Dupla idézőjeles kiírás!*
Logikai értékek (boolean):
$logikai_ertek_1 = true; // Igaz érték
$logikai_ertek_2 = false; // Hamis érték
Tömbök (array):
$tomb_ertek_1 = array("első elem", "második elem"); // számozott tömb
$tomb_ertek_2 = array("elem1"=> "első elem", "elem2"=>"második elem"); // asszociatív tömb
A tömb elemeire a kulcsokon kereszül tudunk hivatkozni szögletes zárójelek közé írt kulccsal. A számozott tömbök kulcsai 0-val kezdődnek. A fenti példából kiindulva:
-----------------------
<?php
$tomb_ertek_1 = array("első elem", "második elem");
$tomb_ertek_2 = array("elem1"=> "első asszociatív elem", "elem2"=>"második asszociatív elem");
echo $tomb_ertek_1[0]; // Kiírja: első elem
echo $tomb_ertek_2["elem1"]; // kiírja: első asszociatív elem
?>
----------------------
Objektumok (object):
$objektum = New Objektum; // A hivatkozott objektumnak léteznie kell
Erőforrás (resource):
$my_resource = mysqli_connect("localhost","myuser","mypassw","mydatabase"); // Adatbázis kapcsolat erőforrása
NULL:
$null_variable = NULL; // Egy változó akkor NULL, ha a NULL konstanst rendeltük hozzá, vagy ha nem volt semmilyen érték hozzárendelve, esetleg, ha az unset() függvénnyel eldobtuk.
--------
*) A változók szöveges értékeit idézőjelek közé tesszük, amelyek lehetnek egyszerű idézőjelek : 'valami', valamint kettős idézőjelek "valami". A kettő közötti különbség az, hogy az egyszerű idézőjelek közötti szöveg értelmezés nélkül létezik, míg a kettős idézőjeles változatban az értelmező további változókat keres benne, amelyeket próbál feltölteni az adott értékkel.
Példák:
---------------------
<?php
$nem_ertelmezett_szoveg = 'Én egy szöveg vagyok, amelyben szerepel a $szoveges_valtozo nevű változó.';
echo $nem_ertelmezett_szoveg;
?>
---------------------
Figyeljük meg a különbséget:
---------------------
<?php
$tipus_neve = 'szöveg';
$ertelmezett_szoveg = "Én egy $tipus_neve vagyok.";
echo $ertelmezett_szoveg;
?>
---------------------
TIPP
Ahol a szöveg nem tartalmaz változót, használjuk egyszerű idézőjelet: így a php értelmező nem dolgozik feleslegesen azon, hogy változókat keressen (gyorsabb futás), valamint hosszú szövegek esetén olvasás közben látjuk, hogy milyen jellegű a tartalom.
-------
A változók hatásköre
A változókat a létrehozásuk után használhatjuk bárhol a kódban, hatáskörük globális, kivéve a függvények belsejét. A függvényben létrehozott változó helyi hatáskörrel bír, a függvényen kívül létező azonos nevű változót nem érinti. Globális változót behozhatunk a függvénybe a "global" kulcsszóval.
Példák:
--------------------
<?php
$szam_ertek = 1;
echo $szam_ertek; // Kiírja: 1
semmit_nem_ir_ki();
globalis_erteket_ir_ki();
lokalis_erteket_ir_ki();
/* Függvények */
function semmit_nem_ir_ki() {
echo $szam_ertek; // Nem ír ki semmit
}
function globalis_erteket_ir_ki() {
global $szam_ertek;
echo $szam_ertek; // Kiírja: 1
}
function lokalis_erteket_ir_ki() {
$szam_ertek = 2;
echo $szam_ertek; // Kiírja: 2
}
?>
--------------------
d) Konstansok
A konstansok olyan azonosítók, amelyek egyszerű értékek tárolására alkalmasak. Hagyományosan NAGYBETŰVEL jelöljük, a "$" jelet leszámítva a felépítésük azonos a változókkal. Némely konstanst a php alapértelmezetten szállít, ezek listája megtalálható a dokumentációban. Olyan helyeken használjuk, ahol a kód olvashatósága az elsődleges cél.
Példák:
define('PI_ERTEK', 3.14159265358979323846); // Csak osztályon kívüli létrehozás szintaxisa
const PI_ERTEK = 3.14159265358979323846; // Csak osztályon belüli létrehozás szintaxisa
Megjegyzések
A fenti példákban szereplő PI_ERTEK konstans valójában fölösleges, mivel az alapértelmezettek között szerepel az M_PI nevű konstans, amely tartalma megegyezik a fenti példáéval.
A konstansokat nem használhatjuk szövegen belül úgy, mint a változókat.
Példa:
--------------------------
<?php
define('KONSTANS','konstans érték');
$valtozo = 'változó érték';
echo "Ez egy konstans értéke: KONSTANS"; // Kiírja: Ez egy konstans értéke: KONSTANS
echo "Ez egy változó értéke: $valtozo"; // Kiírja: Ez egy változó értéke: változó érték
?>
--------------------------
Futás közbeni módosítások
A változókat futás közben új tartalommal tölthetjük fel, valamint előzetes lefoglalás nélkül használhatjuk bárhol az alkalmazásban.
Példa:
-----------------------------
<?php
$valtozo = 'Most szöveg vagyok!';
echo $valtozo; // Kiírja: Most szöveg vagyok!
$valtozo = 1;
echo $valtozo; // Kiírja: 1
$valtozo = NULL;
echo $valtozo; // Nem ír ki semmit.
?>
-----------------------------
Ezzel szemben a konstansokat csak egy speciális függvényen keresztül tudjuk változtatni; azt ajánlom, hogy abban az esetben, ha egy konstanst utólag változatni kell, akkor inkább használjunk helyette változót.
-------------------------------------------------------------------------------------------------
Feladatok
- Írjunk egy php példaprogramot, amely előre megadott változókból feltölti a következő szöveget: "Az én nevem ....., és ..... éves vagyok."
Használjunk beszédes változóneveket! - Írjuk ki egyetlen változó újrafelhasználásával a következő szövegeket: "Az én nevem .....", majd utána: ".... éves vagyok."
- Hozzunk létre egy 10 elemből álló tömböt, majd irassuk ki a 3. elemet!