A változók
A PHP-ban leggyakrabban a változókkal dolgozunk. Ezeket egy-egy önálló memória cellaként kell elképzelni, aminek megadhatjuk a nevét, a kezdeti tartalmát (értékét), a PHP futása közben pedig a különböző utasítások eredményeképpen ezt a kezdeti értéket fogjuk módosítani. A változókat mindig a neve elé írt dollárjellel $ jelöljük, a nevét pedig tetszés szerint választhatjuk. A változók nevében csak az angol abc betűit (valamint az ASCII 127-255 közötti kódú karaktereket), vagy számokat használhatunk, de a változónév mindig betűvel kezdődjön. <?php
$valtozom = "valami szöveg";
?>
A változónevek kis/nagybetű érzékenyek, tehát $valtozó nem ugyanaz, mint $Valtozo.
Tanács: Bár a PHP nyelvtana nem írja elő, a változókkal végzett műveletek előtt azokat ajánlott defíniálni, azaz megadni a kiinduló értékét és típusát.
fel...
Dinamikus változók
Ez eddig simán ment, ideje, hogy egy kicsit megcifrázzuk.
Eddig egy konkrét értéket rendeltünk egy változóhoz. Néha azonban szükségünk van arra, hogy a változó nevét is dinamikusan állíthassuk be. Ezt az alábbi módon tehetjük meg: <?php
$a = "szeretem ";
$$a = "a php nyelvet";
print ($a . $ {$a});
?>
Ezt az eredményt kapjuk (3/2. példa).
Hasonló eredmény kaphatunk másképpen is: <?php
$felhasznalo = "Valaki";
$tarolo = "felhasznalo";
print ($$tarolo); // a $tarolo -ban a "felhasznalo" nevű változó értéke került.
?>
Ennek a kódnak az eredményét a fenti demó következő példájában találjuk (3/3. példa).
fel...
Hivatkozás változóra
Beletehetjük az $egyik_valtozo értékét a $masik_valtozo-ba is. Ilyenkor a $masik_valtozo értékének a másolata kerül az $egyik_valtozo -ra, mai a program további futása során nem változik magától. <?php
$egyik_valtozo = "valaki";
$masik_valtozo = $egyik_valtozo;
print ($masik_valtozo); // kiírja: "Valaki"
$egyik_valtozo = "akárki";
print $masik_valtozo; // ez nem változott, kiírja: "Valaki"
?>
Nézd meg működés közben (3/4. példa).
Előfordulhat, hogy azt akarjuk, a $masik_valtozo értéke később is módosuljon, amikor az $egyik_valtozo értéke módosul. Ilyenkor nem az $egyik_valtozo értékét helyezzük bele a $masik_valtozo-ba egyszer, hanem csak hivatkozunk rá: <?php
$egyik_valtozo = "Valaki";
$masik_valtozo = &$egyik_valtozo;
print ($masik_valtozo); // kiírja: "Valaki"
$egyik_valtozo = "Akárki"; // megváltozik az $egyik_valtozo értéke
print ($masik_valtozo); // most már megváltozik a $masik_valtozo is: "Akárki"
?>
Így működik (3/5. példa).
fel...
A változók típusai
A változókba behelyezett adatoknak többféle típusa lehet:
neve (en) |
neve (hu) |
leírása |
string |
karaktersor |
szövegek kiírására használjuk, tartalmazhat bármilyen karaktert - betűt, számot, írásjelet. A szöveget mindig egyszeres, vagy dupla idézőjelek közé kell tenni! Példa: $a = "valami szöveg"; |
integer |
egész szám |
értéke csak pozitív, vagy negatív egész szám lehet. Példa: $a = 12; |
float |
lebegőpontos szám |
tizedesszámokat írhatunk le vele. Tizedesjelként mindig pontot kell használni! Példa: $a = 12.99; |
boolean |
logikai érték |
értéke lehet igaz (TRUE), vagy hamis (FALSE) Példa: $a = TRUE; |
array |
tömb |
egy egymáshoz rendelt adatcsomag közös neve. Bővebben lásd a tömbökről szóló részben. Példa: $a = array(18, 156, "valami"); |
object |
objektum |
|
A fentiek közül a string, integer, float és a boolean skaláris változótípusok (skaláris = amit nem lehet kisebb darabokra bontani). A PHP támogatja még a nem skaláris array és object típusokat is.
Az adatok típusát azok definiálásakor a programozó határozza meg. A PHP az adattípusokat rugalmasan használja, azaz futásidőben átalakítja a környezettől függően szükséges típusra.
Adatunk érvényes típusát a getType() beépített függvény segítségével kérdezhetjük le és a setType() függvénnyel módosíthatjuk. Adatainkat az alábbi módon is meghatározhatjuk/módosíthatjuk:
- (int), vagy (integer) - egésszé konvertál
- (bool), (boolean) - logikai értékké konvertál
- (real), (double), (float) - lebegőpontos számmá konvertál
- (array) - tömbbé konvertál
- (object) - objektummá konvertál
Például így: <?php
$szam = "123"; // ez most 'string' típusú
print GetType($szam); // kiírja, hogy 'string' típusú
print GetType((int)$szam); // kiírja, hogy 'integer' típusú
print GetType($szam); // ismét 'string'-nek látja
// tehát a változó típusa nem változott, csak a felhasználás helyén alakítottuk át.
?>
<?php
$szam = "123"; // ez most 'string' típusú
print GetType($szam); // kiírja, hogy 'string' típusú
SetType($szam, "integer"); // most meg is változtatjuk a típusát
print GetType($szam); // kiírja, hogy 'integer' típusú
?>
Jó tudni: Űrlapból kapott változók mindig 'string' típusúak - akkor is, ha csak számot tartalmaznak.
fel...
Változók érvényessége
A már egyszer meghatározott (definiált) változónkat a kód futása során később is bárhol elérhetjük - mindig az aktuális értékével. Ez alól a szabály alól a függvények képeznek csak kivételt. Függvényeken belül csak a függvény paramétereiként beadott változók, valamint az ott definiált változók érhetők el. A függvényen kívülről csak az úgynevezett globális és szuperglobális (a PHP v4.x-től) változók érhetők el. <?php
$valtozom = "Valaki";
function fuggvenyem()
{
print $valtozom;
// nem ír ki semmit, mert nem látja ezt a változót a függvényből.
print $_SERVER["REMOTE_ADDR"];
// a $_SERVER[] egy szuperglobális tömb, mindenhol elérhető - ezt kiírja
}
?>
A függvényekkel később többet is foglalkozunk.
fel...
Előre definiált változók
A PHP számos előre definiált változót kínál, amiben a futásidőben létrejött környezet egyes jellenómzői vannak meghatározva. Ezek az alábbi tömbökből érhetők el:
- $GLOBALS -
- $_SERVER, vagy $HTTP_SERVER_VARS - a webszerver által beállított változók
- $_GET, vagy $HTTP_GET_VARS - HTTP GET kérés által létrejövő változók.
- $_POST, vagy $HTTP_POST_VARS - HTTP POST kérés által létrejövő változók.
- $_COOKIE, vagy $HTTP_COOKIE_VARS - HTTP sütikből (cookie) származó változók.
- $_FILES, vagy $HTTP_POST_FILES - a fájlfeltöltés által létrejövő változók.
- $_ENV, vagy $HTTP_ENV_VARS - a környezetből származó változók.
- $_REQUEST - a HTTP GET, POST és COOKIE bementekből származó változók összessége.
- $_SESSION, vagy $HTTP_SESSION_VARS - a munkamenethez tartozó változók.
Ezek mind globális (pl: $HTTP_SERVER_VARS) és szuperglobális (pl: $_SERVER) változók. A szuperglobális változók a PHP 4.x verziótól léteznek, innen a régebbi globális meghatározás még érvényes, de használatuk már nem ajánlott.
Ennyi a változókról - pihenésképpen a következő fejezet a PHP állandóiról rövidebb lesz. | |