PHP ima standardne krmilne konstrukte — pogojne stavke (, , ), zanke (, , ) in razgibavaje (, ) — ter nekaj posebnih zmožnosti, kot sta za polja in sodoben izraz.
ifswitchmatchforforeachwhilebreakcontinueforeachmatch<?php
if ($score >= 90) {
$grade = "A";
} elseif ($score >= 80) {
$grade = "B";
} else {
$grade = "F";
}
// ternary and null coalescing
$status = $age >= 18 ? "adult" : "minor";
$name = $input ?? "default"; // ?? — use default if null/unset (PHP 7+)
$value ??= "x"; // ??= assign if null (PHP 7.4)
Operator ničelnega združevanja ?? se v PHP pogosto uporablja za privzete vrednosti (vrne desno stran, če je leva stran null ali ni nastavljena) — čistejše od preverjanja s isset().
switch ($day) {
case "Sat":
case "Sun":
$type = "weekend"; break; // ⚠️ break needed or it falls through
default:
$type = "weekday";
}
// match (PHP 8) — cleaner: returns a value, STRICT comparison, NO fall-through
$type = match($day) {
"Sat", "Sun" => "weekend", // multiple values, no break needed
default => "weekday",
};
Izraz match (PHP 8) je sodobno izboljšanje switch: vrača vrednost, uporablja strogo primerjavo (===) in nima padanja (ni potreben break) — priporočeno v novem kodu.
for ($i = 0; $i < 10; $i++) { }
foreach ($items as $item) { } // iterate array values
foreach ($map as $key => $value) { } // keys + values — the PHP idiom for arrays
while ($condition) { }
do { } while ($condition);
foreach je idiomatska, najpogosteje uporabljena zanka v PHP za iteriranje po poljih (z obliko $key => $value za asociativna polja).
foreach ($items as $item) {
if ($item->skip) continue; // skip to next iteration
if ($item->stop) break; // exit the loop
}
Krmilni tok je osnovni mehanizem za izražanje logike, ki se uporablja v vsakem programu, zato je razumevanje PHP konstruktov temeljno vsakodnevno znanje.
Večina so standardne, vendar nekaj specifičnih točk PHP-ja je pomembnih: foreach je idiomatska, prevladujoča zanka za iteriranje po PHP-jeve vseprisotnih poljih (z obliko $key => $value za preslikave); operator ničelnega združevanja ?? (in ??=) se pogosto uporablja za čisto obravnavo privzetih vrednosti (posebna PHP idiomatika); in sodobni izraz match (PHP 8) je pomembno izboljšanje pred nagnjenim switch — vrača vrednost, uporablja strogo primerjavo in odpravlja napake padanja (klasična switch nevarnost, da pozabimo break).
Znanje teh konstruktov in dajanje prednosti sodobnejšim, varnejšim oblikam (match namesto switch, ?? za privzete vrednosti) je vsakodnevno znanje za pisanje čistega, idiomatskega, brez napak PHP logike, kar kaže tekoče znanje tako temeljnih gradnikov kot sodobnih PHP izboljšav.