Capitol gratuit

Variabile, tipuri de date și operatori

PHP este un limbaj dinamic tipizat - variabilele nu necesită declararea tipului, iar tipul se poate schimba pe parcurs. Cu PHP 8.x, puteți adăuga type hint...

Introducere

PHP este un limbaj dinamic tipizat - variabilele nu necesită declararea tipului, iar tipul se poate schimba pe parcurs. Cu PHP 8.x, puteți adăuga type hints pentru siguranță.

Variabile

<?php
// Variabilele încep cu $ și sunt case-sensitive
$nume = "Dorel";
$varsta = 35;
$activ = true;
$pret = 99.99;

// Reguli de denumire
$numeUtilizator = "ionescu";   // camelCase (recomandat)
$email_client = "a@b.com";     // snake_case (acceptat)
// $2name = "invalid";          // NU poate începe cu cifră
// $nume-client = "invalid";    // NU poate conține cratimă

// Constante
define('VERSIUNE', '2.0');
const SITE_NUME = 'GOAI';

echo VERSIUNE;     // 2.0
echo SITE_NUME;    // GOAI

// Variabile variabile (advanced)
$camp = 'email';
$$camp = 'test@goai.ro';   // Creează $email = 'test@goai.ro'
echo $email;                // test@goai.ro

Tipuri de date

Tip Exemplu Descriere
string "text" sau 'text' Șir de caractere
int 42, -10, 0xFF Număr întreg
float 3.14, 2.5e3 Număr cu virgulă
bool true, false Valoare logică
array [1, 2, 3] Colecție de valori
object new StdClass() Instanță a unei clase
null null Absența unei valori
callable funcții, closure-uri Funcție apelabilă
<?php
// Verificare și conversie tipuri
$valoare = "42";

echo gettype($valoare);    // string
echo is_string($valoare);  // true (1)
echo is_numeric($valoare); // true (1)

// Type casting
$nr = (int) "42";          // int 42
$text = (string) 42;       // string "42"
$bool = (bool) "";         // false
$arr = (array) "text";     // ["text"]

// Valori considerate false (falsy)
// false, 0, 0.0, "", "0", [], null, SimpleXMLElement gol

Operatori

<?php
// Aritmetici
$a = 10 + 3;    // 13
$b = 10 - 3;    // 7
$c = 10 * 3;    // 30
$d = 10 / 3;    // 3.333...
$e = 10 % 3;    // 1 (rest)
$f = 2 ** 8;    // 256 (putere)

// Comparare
10 == "10"      // true  (compară valoarea, cu conversie)
10 === "10"     // false (compară valoarea ȘI tipul) - RECOMANDAT!
10 != 5         // true
10 !== "10"     // true
10 <=> 20  // -1 (spaceship operator: -1, 0, 1)

// Logici
$x = true && false;   // false (AND)
$y = true || false;       // true (OR)
$z = !true;                // false (NOT)

// Null coalescing (??)
$user = $_GET['user'] ?? 'anonim';  // Dacă nu există, returnează 'anonim'
$config = $settings['db'] ?? $defaults['db'] ?? 'sqlite';

// Null safe operator (?->) - PHP 8.0+
$tara = $user?->adresa?->tara;  // null dacă orice e null (fără eroare)

// String
$salut = "Bună, " . $nume . "!";         // Concatenare cu .
$salut = "Bună, {$nume}!";               // Interpolare (doar în ghilimele duble)
$text .= " Adăugare";                     // Concatenare și atribuire

// Spread operator
$numere = [1, 2, 3];
$toate = [...$numere, 4, 5, 6];           // [1, 2, 3, 4, 5, 6]
⚠️ Greșeală frecventă: Folosiți ÎNTOTDEAUNA === (comparare strictă) în loc de == (comparare liberă). Compararea liberă poate produce rezultate surprinzătoare: 0 == "text" returnează true în PHP 7 (corectat parțial în PHP 8).

Continuați cu restul cursului

Acesta este capitolul 2 din cele 20 ale cursului, cu 4 lecții din 102. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.

Cumpărați cursul la 110 €