Junior
Cum funcționează tipizarea dinamică în PHP?
sobes.tech AI
Răspuns de la AI
PHP este un limbaj cu tipizare dinamică și slabă.
- Tipizare dinamică: Tipul unei variabile este determinat în timpul execuției, pe baza valorii atribuite, și nu este declarat explicit în prealabil.
- Tipizare slabă: PHP poate efectua conversii implicite de tipuri (conversie contextuală), ceea ce poate duce uneori la comportamente neașteptate la compararea sau efectuarea de operații între valori de tipuri diferite.
Exemple:
- Schimbarea tipului variabilei:
<?php $variable = 123; // int $variable = "salut"; // string $variable = [1, 2]; // array ?> - Conversie implicită de tipuri la comparare:
<?php var_dump(10 == "10"); // bool(true) - șirul "10" este convertit în număr 10 var_dump(0 == false); // bool(true) - false este convertit în număr 0 var_dump("abc" == 0); // bool(true) - șirul "abc" este convertit în număr 0, deoarece nu începe cu un număr ?> - Utilizarea comparației stricte pentru a evita conversia implicită:
<?php var_dump(10 === "10"); // bool(false) - compară atât valoarea, cât și tipul var_dump(0 === false); // bool(false) var_dump("abc" === 0); // bool(false) ?>
Deși tipizarea dinamică oferă flexibilitate și accelerează dezvoltarea în etapele inițiale, poate duce la erori care sunt detectate doar în timpul execuției. Pentru a îmbunătăți fiabilitatea codului, în PHP 7+ au fost introduse declarațiile de tip (type declarations) și modul strict de tipuri (strict types).
<?php
declare(strict_types=1); // Activează modul strict de tipuri pentru fișierul curent
function sum(int $a, int $b): int { // Declararea tipurilor pentru argumente și valoarea de returnare
return $a + $b;
}
// sum(1, "2"); // Acest lucru va provoca o eroare de tip (TypeError) în modul strict
?>
Declarațiile de tip și modul strict permit verificarea tipurilor în timpul analizei statice sau în timpul execuției înainte de apelarea funcției, contribuind la scrierea unui cod mai previzibil și mai ușor de întreținut.