Structurile de control determină fluxul execuției programului. PHP oferă structuri clasice (if, switch) și moderne (match), plus operatori ternari pentru condiții scurte.
Capitol gratuit
Structuri de control - if, switch, match
Structurile de control determină fluxul execuției programului. PHP oferă structuri clasice (if, switch) și moderne (match), plus operatori ternari pentru c...
Introducere
if / elseif / else
<?php
$nota = 8.5;
if ($nota >= 9) {
$calificativ = "Excelent";
} elseif ($nota >= 7) {
$calificativ = "Bine";
} elseif ($nota >= 5) {
$calificativ = "Satisfăcător";
} else {
$calificativ = "Nesatisfăcător";
}
echo $calificativ; // "Bine"
// Condiții multiple
$varsta = 25;
$permis = true;
if ($varsta >= 18 && $permis) {
echo "Poate conduce";
}
if ($varsta < 18 || !$permis) {
echo "Nu poate conduce";
}Operatorul ternar
<?php
// Ternar clasic
$status = ($varsta >= 18) ? 'adult' : 'minor';
// Ternar scurt (Elvis operator)
$nume = $input ?: 'Anonim'; // Dacă $input e falsy, returnează 'Anonim'
// Null coalescing (diferit de ternar!)
$user = $data['user'] ?? 'Necunoscut'; // Doar dacă e null/inexistentswitch
<?php
$zi = date('l'); // Numele zilei în engleză
switch ($zi) {
case 'Monday':
echo "Începutul săptămânii";
break;
case 'Friday':
echo "Vineri! Weekend aproape";
break;
case 'Saturday':
case 'Sunday':
echo "Weekend!";
break;
default:
echo "Zi obișnuită";
break;
}match (PHP 8.0+)
match este versiunea modernă a switch - mai sigură (comparare strictă), mai concisă și returnează o valoare:
<?php
$statusCode = 404;
$mesaj = match ($statusCode) {
200 => 'OK',
301 => 'Moved Permanently',
404 => 'Not Found',
500 => 'Internal Server Error',
default => 'Unknown Status',
};
echo $mesaj; // "Not Found"
// Match cu condiții multiple
$luna = 3;
$anotimp = match (true) {
$luna >= 3 && $luna <= 5 => 'Primăvară',
$luna >= 6 && $luna <= 8 => 'Vară',
$luna >= 9 && $luna <= 11 => 'Toamnă',
default => 'Iarnă',
};
// Match cu valori multiple
$zi = 'Luni';
$tip = match ($zi) {
'Luni', 'Marți', 'Miercuri', 'Joi', 'Vineri' => 'Zi lucrătoare',
'Sâmbătă', 'Duminică' => 'Weekend',
};
✓ match (PHP 8+)
Comparare strictă (===)
Returnează o valoare
Nu necesită break
Aruncă eroare dacă nu se potrivește nimic
Cod concis
Comparare strictă (===)
Returnează o valoare
Nu necesită break
Aruncă eroare dacă nu se potrivește nimic
Cod concis
✗ switch (clasic)
Comparare liberă (==)
Nu returnează valoare
Necesită break (fall-through bugs)
Default opțional (silent fail)
Cod mai verbose
Comparare liberă (==)
Nu returnează valoare
Necesită break (fall-through bugs)
Default opțional (silent fail)
Cod mai verbose
🎯 Recomandare: Folosiți
match în PHP 8+ ori de câte ori este posibil. Este mai sigur, mai curat și evită bug-urile clasice de switch (break uitat, comparare liberă).
Continuați cu restul cursului
Acesta este capitolul 3 din cele 20 ale cursului, cu 5 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 €