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.