În aceasta lectie vom discuta despre constante si variabile dinamice. Puteti scrie programe PHP utile si complexe fara a utiliza constante sau variabile dinamice. Daca utilizarea constantelor poate facilita citirea programelor dumneavoastra, variabilele dinamice au un efect contrar. Din acest motiv, în general se recomanda evitarea variabilelor dinamice, mai ales de catre programatorii PHP începatori. Totusi, va puteri afla în situatia de a lucra la un program PHP scris de o persoana care foloseste aceste variabile; prin urmare, trebuie sa aveti cunostinte despre variabilele dinamice, indiferent daca le folositi sau nu în propriile dumneavoastra programe.
O constanta este pur si simplu o valoare care este... constanta, cu alte cuvinte o valoare care nu se modifica, în acest sens, constantele sunt opusele variabilelor, deoarece valoarea unei variabile se poate modifica pe durata executiei unui program.
Pentru a defini o constanta, folositi functia define().
Sa consideram urmatorul exemplu:
Pe lânga sporirea lizibilitatii programelor, constantele pot facilita modificarea acestora.
Sa presupunem ca ati scris un program care contine multe calcule ce folosesc valoarea 3,14159, iar ulterior ati descoperit ca trebuia sa folositi valoarea mai exacta 3,1415926535898. Descoperirea si modificarea fiecarei aparitii a valorii originale poate fi o activitate mare consumatoare de timp. Dar, daca ati definit o constanta pentru reprezentarea valorii, numarul 3,14159 va aparea o singura data în program si va fi necesara doar o singura modificare a constantei.
Valoarea "pi" este folosita extrem de frecvent în unele calcule. Pentru comoditate, PHP furnizeaza o functionalitate mai indicata decât definirea unei constante cu valoarea pi, functia pi() returneaza valoarea respectiva, cu 14 cifre semnificative (3.1415926535898).
Astfe, puteti calcula aria unui cerc folosind urmatoarea expresie:
Daca o constanta poate spori lizibilitatea si simplitatea modificarii programelor, variabilele dinamice îngreuneaza întelegerea si posibilitatea de a opera schimbari în program.
Iata un exemplu simplu de variabila dinamica, denumita "$$film" :
O variabila dinamica este denumita folosind doua simboluri ale dolarului ($$) si este asociata cu o variabila obisnuita care are un nume similar si include un singur simbol al dolarului.
In exemplul de mai sus, variabila dinamica $$film este asociata cu variabila obisnuita, dar cu aceasi nume, $film.
Valoarea unei variabile obisnuite da numele (fara un simbol al dolarului) unei a doua variabile ordinare, în exemplu nostru, a doua variabila obisnuita este $oameni_buni. Valoarea acestei a doua variabile obisnuite este valoarea variabilei dinamice: în exemplu, aceasta este valoarea 12. Deci valoarea variabiei dinamice $$film, si care va fi afisata de functia "echo" este 12.
O variabila dinamica nu contine, practic, propria sa valoare. În schimb, contine amplasamentul unde se poate gasi valoarea; cu alte cuvinte, numele unei alte variabile.
Daca variabilele dinamice vi se par derutante, asa e, variabilele dinamice sunt derutante. Sunt rar folosite, uneori este posibila reducerea dimensiunilor unui program folosind una sau mai multe variabile dinamice.
In lectia 2 ati invatat despre tipul variabilelor: Boolean, Integer, Float, String, Array, Object, Resource, Null.
. O consecinta a caracterului dinamic al tipurilor de variabile din limbajului PHP este aceea ca nu trebuie sa specificati tipul variabilelor. PHP determina tipul variabilei în functie de tipul ultimei valori atribuite variabilei. Cu toate acestea, caracterul dinamic al tipurilor nu va scuteste de problemele legate de tipuri. Trebuie sa cunoasteti tipurile acceptate si ceea ce se întâmpla când în cadrul expresiilor se folosesc doua sau mai multe tipuri.
Sa luam în considerare urmatorul script PHP scurt:
Daca preferati, puteti prelua controlul conversiei tipului variabilei sau puteti modifica tipul unei variabile. Pentru a prelua controlul conversiei de tip, puteti converti fortat un operand de la un tip la altul, proces cunoscut sub numele de "conversie fortata de tip" sau pur si simplu conversie fortata.
În continuare, este dat un exemplu unei astfel de conversie de tip, unde puteti vedea modul de efectuare a acesteia:
Conversie fortata | Rezultat |
(int), (integer) | - Conversie fortata la întreg |
(real), (double), (float) | - Conversie fortata la dublu |
(string) | - Conversie fortata la sir |
(array) | - Conversie fortata la tablou (matrice) |
(object) | - Conversie fortata la obiect |
O alta modalitate de a trata o variabila ca si cum ar fi de un tip specificat este folosirea unor functii specifice.
Ca exemplu de utilizare a uneia dintre functiile respective, luati în considerare si studiati urmatorul exemplu:
Functie | Operatie |
doubleval(), floatval() | - Trateaza argumentul ca fiind de tip dublu. |
intval() | - Trateaza argumentul ca fiind de tip întreg. |
strval() | - Trateaza argumentul ca fiind de tip string |
Nici conversia normala si nici cea fortata nu modifica tipul unei variabile. Ambele mecanisme determina tratarea variabilelor doar in expresia respectiva ca si cum ar fi de un alt tip.
Totusi, modificarea tipului unei variabile este posibila prin utilizarea functiei settype().
Acest procedeu este ilustrat în urmatorul exemplu:
Sa ne amintim din lectia 2 ca exista o functie conexa, gettype(), care returneaza un sir care indica tipul variabilei specificate. Scriptul urmator afiseaza "integer", care indica tipul variabilei $x:
$x = 1;
echo gettype($x);
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
a:hover { font-weight: bold; color: #00da01; }
var num = 12.34567; num = num.toFixed(2); alert(num); // 12.35
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_export($arr);
What time is it? It is a quarter to 5. - Cat este ora? E 5 fara un sfert.
¿Qué hora es? Son las tres menos cuarto. - Cat este ora? E 3 fara un sfert.