Constante si tipuri de variabile


Î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.

1. Utilizarea constantelor

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:

- Aceasta instructiune defineste constanta "PI", atribuindu-i valoarea 3.14159. Dupa ce a fost definita, o constanta se poate folosi în cadrul unei expresii.
De exemplu, puteti calcula aria unui cerc dupa cum urmeaza: - Observati ca referintele la o constanta nu folosesc simbolul dolarului. Astfel, o constanta poate fi cu usurinta deosebita de o variabila. Multi programatori scriu numele constantelor folosind numai majuscule, ceea ce le face si mai simplu de identificat.
O functie conexa, defined(), poate determina daca o anumita constanta a fost definita.
De exemplu, cu ajutorul urmatoarei instructiuni PHP puteri determina daca fost definita constanta Pi: - Retineti ca numele care va fi testat este delimitat prin ghilimele duble.
Functia defined() returneaza valoarea 1 (unu) daca respectiva constanta a fost specificata; în caz contrar, returneaza zero
In acest exemplu, instructiunea echo va afisa valoarea 1.

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:

2. Lucrul cu variabile dinamice

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" :

<?php
$oameni_buni = 12;
$film = "oameni_buni";
echo $$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.

3. Lucrul cu tipuri de variabile

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:

- Instructiunea de atribuire care stocheaza o valoare în variabila $z este interesanta, deoarece expresia din membrul drept include un operand Integer (întreg) si un operand de tip float. Ce valoare va aparea la iesire? Raspunsul corect este 3.5, o valoare de tip float.
Când o expresie aritmetica foloseste mai multe tipuri de variabile, PHP executa conversia automata a tipului. Daca unul dintre operanzi este de tip float, PHP trateaza ceilalti operanzi ca si cum ar fi de tip float, executa calculele si returneaza rezultatul ca valoare de tip float.
Este important sa întelegeti faptul ca prin conversia de tip nu se modifica tipurile variabilelor unei expresii; acestia sunt pur si simplu tratati ca si cum ar fi fost de un alt tip.
In cadrul exemplului, variabila $x ramâne de tip înteger, chiar daca PHP o trateaza ca o valoare de tip float pentru a executa calculele.
Sirurile (variabilele de tip string) pot fi de asemenea supuse unei conversii de tip. Sa examinam urmatorul exemplu: - Aici cuvântul "inca" din sirul text este ignorat.
Valoarea afisata este 2, adica suma dintre valoarea variabilei $x si valoarea numerica a sirului text, care este 1. Valoarea numerica si tipurile unui sir sunt determinate prin respectarea urmatoarelor reguli:

4. Conversia manuala a tipului variabilelor

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:

Conversia fortata de tip, si anume (int), determina tratarea variabilei $y ca pe un întreg (integer), iar valoarea acesteia devine 2, în loc de 2.5, care este valoarea reala a variabilei $y. Astfel valoarea lui $z care va fi afisata de expresia "echo" este 3.
Tabelul urmator indica si alte conversii fortate de tip care se pot folosi si expresiile care trebuesc utiizate:
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:

<?php
$x = 1.5;
$y = intval($x);

echo $x;
echo "<br />$y";
?>
Rezultatul afisat va fi:
1.5
1
Valoarea 1.5 este afisata ca valoare a variabilei $x, iar valoarea l este afisata ca valoare a variabilei $y.
Tabelul urmator prezinta si alte functii foosite pentru a trata o variabila ca si cum ar fi de alt tip.
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:

- Tipul variabilei $x va fi schimbat in "integer", astfel valoarea afisata a variabilei $x este 1, deoarece fractia zecimala se pierde atunci când functia settype() converteste valoarea float la o valoare întreaga.
Valorile posibile pentru al doilea argument al functiei settype(), si anume argumentul care specifica tipul dorit, sunt:

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);


- O lista cu mai multe functii utile in lucru cu tipuri de variabile si valorile lor gasiti la pagina -> Functii pentru tipuri de variabile si valori.
Variabile de mediu si ... <<-- Anterior ----------- Urmator -->> Instructiuni conditionale if else

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag adauga rand nou in paragraf?
<b> <br> <p>
Prima linie ...<br>
Alta linie...
Ce proprietate CSS seteaza spatiu dintre litere?
text-size word-spacing letter-spacing
#id {
  letter-spacing: 2px;
}
Ce functie obtine accesul la un element HTML cu un anumit ID?
getElementById() getElementsByTagName() createElement()
var elm = document.getElementById("theID");
var content = elm.innerHTML;
alert(content);
Clic pe instructiunea "echo" utilizata corect.
echo "CoursesWeb.net" echo "CoursesWeb.net"; echo ""CoursesWeb.net";
echo "Adresa URL: http://CoursesWeb.net";
Care din urmatoarele expresii cu "paint" (a picta) se foloseste pentru forma Negativa?
will paint not paint have painted
She does not paint that landscape.
- Ea nu picteaza acel peisaj.
Care din urmatoarele expresii cu "cantar" (a canta) se foloseste pentru propozitie Negativa?
ir a cantar cantaba no cantar
Ella no canta esa canción.
- Ea nu canta acel cantec.
Constante si tipuri de variabile - Tutorial PHP