Tag 2 · Block 4 · BK5 · Coderichtlinien

Controller, Repository, Autoloading

Das Wichtigste

📖 Lies zuerst im Handout: Handout Tag 2 · Block 4 · Inhalt. Die Aufgaben prüfen, ob du es verstanden hast – nicht, ob du es findest.

Teil 1 · Verstehen

1

Wer ist zuständig?

In welche Datei gehört die Aufgabe?

📖 Nachlesen: Handout Tag 2 · Block 4 · Inhalt (Repository, Controller)

  • Ergebnis mit json_encode ausgeben
  • Route mit match(true) wählen
  • PDO-Verbindung mit dem DSN aufbauen
  • vendor/autoload.php laden
  • false von fetch() in null umwandeln
  • Objekte erzeugen: new KurseController(new KursRepository(db()))
  • http_response_code(404), wenn der Kurs fehlt
  • SQL vorbereiten und ausführen
2

Wer ruft wen auf?

Bring die Teile in die Reihenfolge, in der ein Request sie durchläuft.

📖 Nachlesen: Handout Tag 2 · Block 4 · ACHTUNG (Flussrichtung)

  1. 1.KursRepository
  2. 2.PDO (db())
  3. 3.KurseController
  4. 4.public/index.php
3

PSR-4: Namespace → Datei

In composer.json steht "App\\": "src/". Wo sucht der Autoloader die Klasse? (Pfad ab Projektordner)

📖 Nachlesen: Handout Tag 2 · Block 4 · Composer und PSR-4

4

Class not found

PHP meldet Class "App\Controller\KurseController" not found. Die Datei liegt unter src/Controllers/KurseController.php. Warum?

📖 Nachlesen: Handout Tag 2 · Block 4 · Composer und PSR-4

5

Code-Review: Trennung verletzt?

Welche Stellen verletzen die Trennung von Controller und Repository?

📖 Nachlesen: Handout Tag 2 · Block 4 · Inhalt

Mehrere Antworten richtig.

Teil 2 · In deinem Projekt

Lab 2.4 – Code strukturieren

Erst wenn Teil 1 erledigt ist. Dann hast du alles, was du dafür brauchst.

Arbeite allein in deinem eigenen Projekt. Der Walkthrough im Handout ist deine Notfall-Hilfe – versuch es zuerst ohne.

  1. Lege die Ordner src/Controller/ und src/Repository/ an.
  2. Erstelle src/Database.php mit der PDO-Singleton-Verbindung.
  3. Erstelle src/Repository/KursRepository.php mit den SQL-Abfragen (keine HTTP-Logik).
  4. Erstelle src/Controller/KurseController.php mit dem HTTP-Handling (kein SQL).
  5. Schreibe composer.json mit PSR-4-Autoloading und führe composer dump-autoload aus.
  6. Passe public/index.php an: Autoloader laden, Objekte erzeugen, Router.
  7. PSR-12 einhalten: 4 Leerzeichen, Klammern von Klassen und Methoden auf eigener Zeile, PHPDoc-Blöcke.

Akzeptanzkriterien – hake ab, was bei dir läuft

Zum Schluss: committen und pushen

git add .
git commit -m "refactor: Controller und Repository einführen, PSR-4 Autoloading aktivieren"
git push