Les 11 — PDO-classes, fetch modes & DI
Data-access netjes in classes; dependency injection i.p.v. globals.
In deze les
Wat je gaat doen. DBConnect en Person in eigen files; show_persons.php alleen nog aanroepen. Extra: fetch-modes, User, login/register.
Wat je leert. De database-handle niet “ergens globaal” pakken, maar doorgeven (dependency injection).
Komt aan bod. Class-files, FETCH_ASSOC e.d., global vs constructor vs DI.
Gewone opdracht
Opdracht 25
Zet DI-opzet in aparte class-files (DBConnect, Person, …). 11/show_persons.php bevat vooral:
$db_handle = DBConnect::getInstance(); $person = new Person($db_handle); $person->showPersons();
Extra / variant
Extra A — Opdracht 26 Fetch modes
Script waarin je via $_GET kiest tussen FETCH_ASSOC, FETCH_BOTH, FETCH_LAZY, FETCH_OBJ en de data toont. Startpagina met vier links.
Extra B — Opdracht 27 User.class.php
Maak User.class.php analoog aan Person; toon via show_users.php.
Extra C — Opdracht 28 getUser
Breid User uit met getUser($username, $password) via prepared statement + FETCH_OBJ.
Extra D — Opdracht 29 Login + aanmelden
Twee formulieren (login / aanmelden). Switch in PHP: login of insert+login. Username in session. Include DBConnect + User (met insert-methode).
Extra E Vergelijk connect-stijlen
Bekijk ná eigen poging de drie connect-stijlen onder Uitwerking (global vs constructor vs DI). Noteer in 11/di-keuze.md waarom DI de voorkeur heeft.
Uitwerking (ná eigen poging)
DI/class-files en show_persons (opdracht 25 e.v.). Eerst zelf bouwen.
Toon uitwerkingen
Klik een bestand om de bron te zien (of “Nieuwe tab”). PHP draait bij jou lokaal in XAMPP.
Opleveren
git add 11→ commit → push- Mail: les 11 klaar of hulp + repo-link