Vom vorbi in acest articol despre un aspect de care programatorii PHP tin cont destul de rar: tipul variabilei cu care lucreaza. Este adevarat ca PHP nu este foarte pretentios din acest punct de vedere, asa ca de ce ne-am bate capul cu asa ceva?
Pai, depinde foarte mult de situatiile in care ne gasim. Sa zicem ca avem de-a face cu un API care intoarce printre altele TRUE
si FALSE
. Ati crede ca sunt valori de tip BOOLEAN
dar nu este mereu asa. Am avut de-a face cu astfel de interfete care desi intorceau success => TRUE
nu era o valoarea booleana, ci sirul de caractere “TRUE”.
Mi-a luat ceva timp sa-mi dau seama ce se intampla de fapt, pentru ca daca printezi valoarea la ecran, vezi doar TRUE
, ceea ce poate sa insemne orice. Asa ca am cautat putin si am descoperit ca exista o functie foarte utila in PHP. Se numeste gettype()
si intoarce tipul variabilei evaluate.
Sa vedem o bucata de cod care sa exemplifice ceea ce spun:
<?php $var_string = "5"; $var_int = 5; $first_eval = gettype($var_string); $second_eval = gettype($var_int); echo $first_eval; // rezultat: 'string' echo $second_eval; // rezultat: 'integer' ?>
De asemenea, pentru cei carora le place sa specifice tipul variabilelor cu care lucreaza (daca au background de Java sau AS3 de exemplu) exista si un settype()
. Acesta ia doi parametri: primul este variabila pe care vrem sa o setam si al doi-lea este tipul pe care dorim sa-l “imprimam”.
<?php settype($var_string, "integer"); $eval = gettype($var_string); echo $eval; // rezultat: 'integer' ?>
* Observati ca nu am mai definit variabile $var_string
. Asta pentru ca am folosit-o pe cea din exemplul de mai sus.
Atentie, functia settype()
nu intoarce variabila setata. Nu fiti tentati sa scrieti codul in felul urmator:
<?php $new_var = settype($var_string, "integer"); $eval = gettype($new_var); echo $eval; // rezultat: 'boolean' ?>
Codul scris in acest fel va intoarce boolean in loc de integer pentru ca functia settype()
intoarce TRUE
atunci cand setarea se face cu succes si FALSE
cand nu.