A vltozk
A PHP-ban leggyakrabban a vltozkkal dolgozunk. Ezeket egy-egy nll memria cellaknt kell elkpzelni, aminek megadhatjuk a nevt, a kezdeti tartalmt (rtkt), a PHP futsa kzben pedig a klnbz utastsok eredmnyekppen ezt a kezdeti rtket fogjuk mdostani. A vltozkat mindig a neve el rt dollrjellel $ jelljk, a nevt pedig tetszs szerint vlaszthatjuk. A vltozk nevben csak az angol abc betit (valamint az ASCII 127-255 kztti kd karaktereket), vagy szmokat hasznlhatunk, de a vltoznv mindig betvel kezddjn. <?php
$valtozom = "valami szveg";
?>
A vltoznevek kis/nagybet rzkenyek, teht $valtoz nem ugyanaz, mint $Valtozo.
Tancs: Br a PHP nyelvtana nem rja el, a vltozkkal vgzett mveletek eltt azokat ajnlott defnilni, azaz megadni a kiindul rtkt s tpust.
fel...
Dinamikus vltozk
Ez eddig simn ment, ideje, hogy egy kicsit megcifrzzuk.
Eddig egy konkrt rtket rendeltnk egy vltozhoz. Nha azonban szksgnk van arra, hogy a vltoz nevt is dinamikusan llthassuk be. Ezt az albbi mdon tehetjk meg: <?php
$a = "szeretem ";
$$a = "a php nyelvet";
print ($a . $ {$a});
?>
Ezt az eredmnyt kapjuk (3/2. plda).
Hasonl eredmny kaphatunk mskppen is: <?php
$felhasznalo = "Valaki";
$tarolo = "felhasznalo";
print ($$tarolo); // a $tarolo -ban a "felhasznalo" nev vltoz rtke kerlt.
?>
Ennek a kdnak az eredmnyt a fenti dem kvetkez pldjban talljuk (3/3. plda).
fel...
Hivatkozs vltozra
Beletehetjk az $egyik_valtozo rtkt a $masik_valtozo-ba is. Ilyenkor a $masik_valtozo rtknek a msolata kerl az $egyik_valtozo -ra, mai a program tovbbi futsa sorn nem vltozik magtl. <?php
$egyik_valtozo = "valaki";
$masik_valtozo = $egyik_valtozo;
print ($masik_valtozo); // kirja: "Valaki"
$egyik_valtozo = "akrki";
print $masik_valtozo; // ez nem vltozott, kirja: "Valaki"
?>
Nzd meg mkds kzben (3/4. plda).
Elfordulhat, hogy azt akarjuk, a $masik_valtozo rtke ksbb is mdosuljon, amikor az $egyik_valtozo rtke mdosul. Ilyenkor nem az $egyik_valtozo rtkt helyezzk bele a $masik_valtozo-ba egyszer, hanem csak hivatkozunk r: <?php
$egyik_valtozo = "Valaki";
$masik_valtozo = &$egyik_valtozo;
print ($masik_valtozo); // kirja: "Valaki"
$egyik_valtozo = "Akrki"; // megvltozik az $egyik_valtozo rtke
print ($masik_valtozo); // most mr megvltozik a $masik_valtozo is: "Akrki"
?>
gy mkdik (3/5. plda).
fel...
A vltozk tpusai
A vltozkba behelyezett adatoknak tbbfle tpusa lehet:
neve (en) |
neve (hu) |
lersa |
string |
karaktersor |
szvegek kirsra hasznljuk, tartalmazhat brmilyen karaktert - bett, szmot, rsjelet. A szveget mindig egyszeres, vagy dupla idzjelek kz kell tenni! Plda: $a = "valami szveg"; |
integer |
egsz szm |
rtke csak pozitv, vagy negatv egsz szm lehet. Plda: $a = 12; |
float |
lebegpontos szm |
tizedesszmokat rhatunk le vele. Tizedesjelknt mindig pontot kell hasznlni! Plda: $a = 12.99; |
boolean |
logikai rtk |
rtke lehet igaz (TRUE), vagy hamis (FALSE) Plda: $a = TRUE; |
array |
tmb |
egy egymshoz rendelt adatcsomag kzs neve. Bvebben lsd a tmbkrl szl rszben. Plda: $a = array(18, 156, "valami"); |
object |
objektum |
|
A fentiek kzl a string, integer, float s a boolean skalris vltoztpusok (skalris = amit nem lehet kisebb darabokra bontani). A PHP tmogatja mg a nem skalris array s object tpusokat is.
Az adatok tpust azok definilsakor a programoz hatrozza meg. A PHP az adattpusokat rugalmasan hasznlja, azaz futsidben talaktja a krnyezettl fggen szksges tpusra.
Adatunk rvnyes tpust a getType() beptett fggvny segtsgvel krdezhetjk le s a setType() fggvnnyel mdosthatjuk. Adatainkat az albbi mdon is meghatrozhatjuk/mdosthatjuk:
- (int), vagy (integer) - egssz konvertl
- (bool), (boolean) - logikai rtkk konvertl
- (real), (double), (float) - lebegpontos szmm konvertl
- (array) - tmbb konvertl
- (object) - objektumm konvertl
Pldul gy: <?php
$szam = "123"; // ez most 'string' tpus
print GetType($szam); // kirja, hogy 'string' tpus
print GetType((int)$szam); // kirja, hogy 'integer' tpus
print GetType($szam); // ismt 'string'-nek ltja
// teht a vltoz tpusa nem vltozott, csak a felhasznls helyn alaktottuk t.
?>
<?php
$szam = "123"; // ez most 'string' tpus
print GetType($szam); // kirja, hogy 'string' tpus
SetType($szam, "integer"); // most meg is vltoztatjuk a tpust
print GetType($szam); // kirja, hogy 'integer' tpus
?>
J tudni: rlapbl kapott vltozk mindig 'string' tpusak - akkor is, ha csak szmot tartalmaznak.
fel...
Vltozk rvnyessge
A mr egyszer meghatrozott (definilt) vltoznkat a kd futsa sorn ksbb is brhol elrhetjk - mindig az aktulis rtkvel. Ez all a szably all a fggvnyek kpeznek csak kivtelt. Fggvnyeken bell csak a fggvny paramtereiknt beadott vltozk, valamint az ott definilt vltozk rhetk el. A fggvnyen kvlrl csak az gynevezett globlis s szupergloblis (a PHP v4.x-tl) vltozk rhetk el. <?php
$valtozom = "Valaki";
function fuggvenyem()
{
print $valtozom;
// nem r ki semmit, mert nem ltja ezt a vltozt a fggvnybl.
print $_SERVER["REMOTE_ADDR"];
// a $_SERVER[] egy szupergloblis tmb, mindenhol elrhet - ezt kirja
}
?>
A fggvnyekkel ksbb tbbet is foglalkozunk.
fel...
Elre definilt vltozk
A PHP szmos elre definilt vltozt knl, amiben a futsidben ltrejtt krnyezet egyes jellenmzi vannak meghatrozva. Ezek az albbi tmbkbl rhetk el:
- $GLOBALS -
- $_SERVER, vagy $HTTP_SERVER_VARS - a webszerver ltal belltott vltozk
- $_GET, vagy $HTTP_GET_VARS - HTTP GET krs ltal ltrejv vltozk.
- $_POST, vagy $HTTP_POST_VARS - HTTP POST krs ltal ltrejv vltozk.
- $_COOKIE, vagy $HTTP_COOKIE_VARS - HTTP stikbl (cookie) szrmaz vltozk.
- $_FILES, vagy $HTTP_POST_FILES - a fjlfeltlts ltal ltrejv vltozk.
- $_ENV, vagy $HTTP_ENV_VARS - a krnyezetbl szrmaz vltozk.
- $_REQUEST - a HTTP GET, POST s COOKIE bementekbl szrmaz vltozk sszessge.
- $_SESSION, vagy $HTTP_SESSION_VARS - a munkamenethez tartoz vltozk.
Ezek mind globlis (pl: $HTTP_SERVER_VARS) s szupergloblis (pl: $_SERVER) vltozk. A szupergloblis vltozk a PHP 4.x verzitl lteznek, innen a rgebbi globlis meghatrozs mg rvnyes, de hasznlatuk mr nem ajnlott.
Ennyi a vltozkrl - pihenskppen a kvetkez fejezet a PHP llandirl rvidebb lesz. | |