Feltételek és Ciklusok
A változókban tárolt adatok önmagukban nem sokat érnek, ha nem tudunk velük logikai döntéseket hozni, vagy nem tudjuk őket automatizáltan feldolgozni. A PHP két legfontosabb vezérlési szerkezete az if/else (feltétel) és a foreach (ciklus).
Az If / Else (A Kidobóember)
Képzeld el az if (ha) utasítást úgy, mint egy szórakozóhely kidobóemberét. Megvizsgál egy állítást, és ha az IGAZ (true), akkor beenged a kódblokkba. Ha HAMIS (false), akkor az else (különben) ágra küld.
<?php
$eletkor = 33;
if ($eletkor >= 100) {
// Ez a kód fut le, ha a feltétel IGAZ
echo "<p>Üdvözlünk a webshopban! Megvásárolhatod a terméket.</p>";
} else {
// Ez a kód fut le, ha a feltétel HAMIS
echo "<p>Sajnáljuk, ez a tartalom csak 100 éven felülieknek elérhető.</p>";
}
?>
A Ciklusok (A Robotmunka)
A programozók lusták. Ha ki kell írni 100 darab terméket a képernyőre, nem fogják 100-szor leírni a HTML kódot. Ehelyett írnak egy ciklust, ami megcsinálja helyettük a robotmunkát a másodperc töredéke alatt.
A Foreach ciklus (A Webfejlesztők Szent Grálja)
A PHP-ban többféle ciklus létezik (for, while), de a webfejlesztésben az esetek 95%-ában a foreach-et fogod használni. Ezt kifejezetten arra találták ki, hogy végigmenjen egy Tömb (Array) összes elemén, az elsőtől az utolsóig.
Nézzünk egy valós, gyakorlati példát. Van egy listánk a menüpontokról, és szeretnénk belőle egy HTML navigációs menüt generálni:
<?php
// 1. Létrehozzuk az adatokat (Tömb)
$menupontok = array("Főoldal", "Szolgáltatások", "Rólunk", "Kapcsolat");
echo "<ul>"; // Megnyitjuk a HTML listát
// 2. Elindítjuk a ciklust
// Magyarul: "Menj végig a $menupontok tömbön, és az éppen aktuális elemet nevezd el $aktualis_elem-nek"
foreach ($menupontok as $aktualis_elem) {
// Ez a kód annyiszor fut le, ahány elem van a tömbben (most 4-szer)
echo "<li><a href='#'>" . $aktualis_elem . "</a></li>";
}
echo "</ul>"; // Lezárjuk a HTML listát
?>
A Profi Módszer: PHP és HTML tiszta keverése
A fenti példában az echo paranccsal írattuk ki a HTML-t. Ez kis kódoknál működik, de egy bonyolult, több div-ből álló termékkártyánál átláthatatlan lesz. A profi fejlesztők "megszakítják" a PHP kódot, leírják a tiszta HTML-t, és csak az adatok helyére szúrnak be egy kis PHP-t.
<?php
$termekek = array("Laptop", "Egér", "Billentyűzet");
?>
<!-- Tiszta HTML kezdődik -->
<div class="termek-lista">
<?php foreach($termekek as $termek): ?>
<!-- Ez a HTML kártya fog ismétlődni -->
<div class="kártya">
<h3> <?php echo $termek; ?> </h3>
<button>Kosárba</button>
</div>
<?php endforeach; ?>
</div>
Figyeld meg a kettőspontot (:) a foreach végén, és az endforeach; lezárást! Ez a szintaxis sokkal olvashatóbbá teszi a sablonokat (Templates), és a WordPress is pontosan ezt a módszert használja a motorháztető alatt.