educom PHP-basis E-learning

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

  1. git add 11 → commit → push
  2. Mail: les 11 klaar of hulp + repo-link

Door naar les 12 →