Les 11 — PDO-classes, fetch modes & DI
Data-access netjes in classes; dependency injection i.p.v. globals.
Demo
opdrachten/11/: dbconnect_via_*.php, pdo_fetch*.php, classes/, show_persons.php
Open demo-bron
Klik een bestandsnaam hieronder om de bron op deze pagina te zien (of “Nieuwe tab”). PHP zelf draait bij jou lokaal in XAMPP.
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 global vs constructor vs DI-demos; noteer in 11/di-keuze.md waarom DI de voorkeur heeft.
Opleveren
git add 11→ commit → push- Mail: les 11 klaar of hulp + repo-link