Refactoring: Umstellung auf Mini-MVC-Architektur (ohne Framework) #46

Closed
opened 2026-05-19 16:23:15 +02:00 by greggy · 0 comments
Owner

Beschreibung

Die bestehende Anwendung soll von einer flachen Struktur (einzelne HTML/PHP-Dateien) in eine saubere Mini-MVC-Architektur ohne externes Framework umgewandelt werden.

Ziel

  • Klare Trennung von Model, View und Controller
  • Kein externes Framework – eigenes, leichtgewichtiges MVC
  • Bessere Wartbarkeit und Erweiterbarkeit
  • Sauberes Routing ueber einen einzelnen Einstiegspunkt (Front Controller)

Bestehende Dateien (aktuell)

index.php           -> Hauptseite
impressum.html      -> Impressum (statisches HTML)
datenschutz.html    -> Datenschutzerklaerung (statisches HTML)
css/haus-schleusingen.css
js/haus-schleusingen.js
bilder/             -> Bildmaterial
fonts/              -> Schriften

Aufgaben

1. MVC-Grundstruktur erstellen

/app
  /controllers/
    HomeController.php
    ImpressumController.php
    DatenschutzController.php
  /models/
  /views/
    home/index.php
    impressum/index.php
    datenschutz/index.php
    layouts/
      header.php
      footer.php
  /core/
    Router.php
    Controller.php (Basisklasse)
    View.php
/public
  index.php (Front Controller / Einstiegspunkt)
  .htaccess (URL-Rewriting)
  /css/
  /js/
  /bilder/
  /fonts/

2. Front Controller und Routing

  • Alle Requests laufen ueber /public/index.php
  • .htaccess leitet Requests auf den Front Controller um
  • Router-Klasse mappt URLs auf Controller/Action
  • Routes:
    • / -> HomeController::index
    • /impressum -> ImpressumController::index
    • /datenschutz -> DatenschutzController::index

3. Controller implementieren

  • HomeController – uebernimmt die bisherige index.php-Logik
  • ImpressumController – uebernimmt den Inhalt von impressum.html
  • DatenschutzController – uebernimmt den Inhalt von datenschutz.html

Jeder Controller erbt von einer abstrakten Controller-Basisklasse mit render()-Methode.

4. Views und Layouts

  • Gemeinsames Layout (Header/Footer) in views/layouts/
  • Controller-spezifische Views in views/controller/index.php
  • View-Klasse fuer Template-Rendering

5. Bestehende HTML-Dateien loeschen

Nach erfolgreicher Umstellung:

  • impressum.html loeschen
  • datenschutz.html loeschen
  • Alte index.php im Root loeschen (wird durch /public/index.php ersetzt)

6. Statische Assets umziehen

  • css/, js/, bilder/, fonts/ -> /public/ verschieben
  • Pfade in Views entsprechend anpassen

7. Tests und Verify

  • Alle Seiten (Home, Impressum, Datenschutz) unter neuen URLs erreichbar
  • Keine 404-Fehler
  • Alte URLs per 301-Redirect auf neue Routes weiterleiten
  • CSS/JS/Bilder laden korrekt

Akzeptanzkriterien

  • Mini-MVC-Struktur ohne externes Framework implementiert
  • Front Controller mit Routing aktiv
  • HomeController, ImpressumController, DatenschutzController funktional
  • Views mit gemeinsamem Layout
  • Statische Assets unter /public/ erreichbar
  • Alte HTML-Dateien (impressum.html, datenschutz.html) geloescht
  • Alte Root-index.php geloescht
  • 301-Redirects von alten auf neue URLs
  • Bestehende Funktionalitaet bleibt vollstaendig erhalten
  • PHP 8.5 kompatibel
## Beschreibung Die bestehende Anwendung soll von einer flachen Struktur (einzelne HTML/PHP-Dateien) in eine **saubere Mini-MVC-Architektur** ohne externes Framework umgewandelt werden. ## Ziel - Klare Trennung von Model, View und Controller - Kein externes Framework – eigenes, leichtgewichtiges MVC - Bessere Wartbarkeit und Erweiterbarkeit - Sauberes Routing ueber einen einzelnen Einstiegspunkt (Front Controller) ## Bestehende Dateien (aktuell) ``` index.php -> Hauptseite impressum.html -> Impressum (statisches HTML) datenschutz.html -> Datenschutzerklaerung (statisches HTML) css/haus-schleusingen.css js/haus-schleusingen.js bilder/ -> Bildmaterial fonts/ -> Schriften ``` ## Aufgaben ### 1. MVC-Grundstruktur erstellen ``` /app /controllers/ HomeController.php ImpressumController.php DatenschutzController.php /models/ /views/ home/index.php impressum/index.php datenschutz/index.php layouts/ header.php footer.php /core/ Router.php Controller.php (Basisklasse) View.php /public index.php (Front Controller / Einstiegspunkt) .htaccess (URL-Rewriting) /css/ /js/ /bilder/ /fonts/ ``` ### 2. Front Controller und Routing - Alle Requests laufen ueber /public/index.php - .htaccess leitet Requests auf den Front Controller um - Router-Klasse mappt URLs auf Controller/Action - Routes: - / -> HomeController::index - /impressum -> ImpressumController::index - /datenschutz -> DatenschutzController::index ### 3. Controller implementieren - HomeController – uebernimmt die bisherige index.php-Logik - ImpressumController – uebernimmt den Inhalt von impressum.html - DatenschutzController – uebernimmt den Inhalt von datenschutz.html Jeder Controller erbt von einer abstrakten Controller-Basisklasse mit render()-Methode. ### 4. Views und Layouts - Gemeinsames Layout (Header/Footer) in views/layouts/ - Controller-spezifische Views in views/controller/index.php - View-Klasse fuer Template-Rendering ### 5. Bestehende HTML-Dateien loeschen Nach erfolgreicher Umstellung: - impressum.html loeschen - datenschutz.html loeschen - Alte index.php im Root loeschen (wird durch /public/index.php ersetzt) ### 6. Statische Assets umziehen - css/, js/, bilder/, fonts/ -> /public/ verschieben - Pfade in Views entsprechend anpassen ### 7. Tests und Verify - Alle Seiten (Home, Impressum, Datenschutz) unter neuen URLs erreichbar - Keine 404-Fehler - Alte URLs per 301-Redirect auf neue Routes weiterleiten - CSS/JS/Bilder laden korrekt ## Akzeptanzkriterien - [ ] Mini-MVC-Struktur ohne externes Framework implementiert - [ ] Front Controller mit Routing aktiv - [ ] HomeController, ImpressumController, DatenschutzController funktional - [ ] Views mit gemeinsamem Layout - [ ] Statische Assets unter /public/ erreichbar - [ ] Alte HTML-Dateien (impressum.html, datenschutz.html) geloescht - [ ] Alte Root-index.php geloescht - [ ] 301-Redirects von alten auf neue URLs - [ ] Bestehende Funktionalitaet bleibt vollstaendig erhalten - [ ] PHP 8.5 kompatibel
greggy added the
InReview
InQA
labels 2026-05-19 16:23:15 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: greggy/landingpage-haus-schleusingen#46
No description provided.