Web MVP Anwendung schreiben

Eine MVP Struktur in PHP aufbauen. Hier als Anleitung

Kümmern wir uns um wichtige erste Model, View und Contoler Dateien

Wir brauchen nun noch Dateien, um zu kontrollieren ob nun wirklich alles funktioniert. Das machen wir mit sehr einfachen und primitiven ersten Dateien.

Als erstes kümmern wir uns um den Ordner Controler:

<?php

namespace Controler;

use Model\HomeModel;

class HomeController
{
    //Hier kommt gleich noch Code
}

Gehen wir zusammen mal diese Sachen durch. Betrachten wir als erstes den „namespace Controler;„: Dies ordnet die Datei dem Controller-Bereich der Anwendung zu. Es ist die „Adresse“ dieser Datei innerhalb der PHP-Klassen. Der Bereich „use Model\HomeModel;“ ist wie ein Import zu sehen. Es sagt dem Code, dass er die Klasse HomeModel aus dem Model-Bereich verwenden wird/soll. Die „class HomeController“ ist der Verantwortliche für alles, was mit der Startseite (Home) zu tun hat.

Nun nachdem wir geklärt haben, wie das ganze bis hier arbeitet und funktioniert, gehen wir zu dem Code der in der Klasse landet. Dieser ist wie folgt:

public function index()
    {
        // 1. Model instanziieren, um Daten zu erhalten
        $homeModel = new HomeModel();
        $data = $homeModel->getPageData();

        // 2. Daten für die View vorbereiten
        $pageTitle = $data['title'];
        $welcomeMessage = $data['message'];

        // 3. View laden und Daten übergeben
        // Die Variablen $pageTitle und $welcomeMessage sind jetzt in der View verfügbar.
        require_once VIEWS_DIR . 'home.php';
    }

Die „public function index()“ ist die Methode welche die gesamte Logik enthällt um die Startseite anzuzeigen. Hierzu führt die index()-Methode drei klare Schritte durch, um die Seite zu generieren. Diese habe ich kommentiert im Code angezeigt. Wir haben

  • Model instanziieren
  • Daten für den View
  • View laden und Daten übergeben

Beim „Model instanzieren“ haben wir:

// 1. Model instanziieren, um Daten zu erhalten
$homeModel = new HomeModel();
$data = $homeModel->getPageData();

Hier wird das „HomeModel“ aktiviert. Dieses Model ist dafür zuständig, die „Daten zu beschaffen“ (z.B. aus der MySQL-Datenbank oder einer Konfigurationsdatei). Die Methode „getPageData()“ liefert die notwendigen Informationen zurück (z.B. den Titel und die Begrüßungsnachricht). Und alle rohen Daten werden in der Variable $data gespeichert.

Wenn es dann zum Bereich „Daten für den View“ geht:

// 2. Daten für die View vorbereiten
$pageTitle = $data['title'];
$welcomeMessage = $data['message'];

Der Controller entnimmt die benötigten Informationen aus dem $data-Array und speichert sie in separaten, leicht verständlichen Variablen ($pageTitle, $welcomeMessage). Würde man hier komplexere Logik brauchen (z.B. Daten formatieren oder prüfen), würde diese hier stattfinden.

Und nun kommen wir zum Bereich der „View laden und Daten übertragen„:

// 3. View laden und Daten übergeben
// Die Variablen $pageTitle und $welcomeMessage sind jetzt in der View verfügbar.
require_once VIEWS_DIR . 'home.php';

Der Controller lädt die home.php-Datei (das View-Template).

Wichtig: Wenn in PHP eine Datei mit require_once geladen wird, werden alle im Controller definierten Variablen (hier $pageTitle und $welcomeMessage) automatisch auch in der geladenen View-Datei verfügbar gemacht. Die View (home.php) enthält dann den HTML-Code und fügt die Variablen $pageTitle und $welcomeMessage an den richtigen Stellen ein, um die fertige Seite zu erzeugen, die an den Browser gesendet wird.

Und schon sind wir mit unserer „Controler/HomeController.php“ fertig und können übergehen das Model zu erarbeiten.

Unser Model/HomeModel.php wird erstellt und erarbeitet

Was wir hier im Code sehen ist das Grundgerüst unserer Model Datei. Dachen die ich vorher schon mal erklärt habe, erspare ich mir in dieser Erklärung diesesmal und gehe direkt zu den Sachen über die wir noch nicht behandelt haben. Einmal die Ansicht der Grundstruktur:

<?php

namespace Model;

class HomeModel
{
    
}

Und nun kommen wir direkt zum Code der innerhalb unserer „HomeModel“ Klasse kommt:

/**
     * Ruft die Daten für die Startseite ab.
     * @return array
     */
    public function getPageData(): array
    {
        return [
            'title' => 'Willkommen bei Eventler',
            'message' => 'Das ist die Startseite deines neuen Projekts!'
        ];
    }

Diese Function ist unser Datenlieferant. public function getPageData(): array ist die Anweisung oder Methode, sowas hatten wir ja schon mal besprochen. Immer wenn der Controller wissen will, welche Daten die Startseite braucht, ruft er diese Methode auf. Der Bereich : array ist eine Garantie, dass die Methode immer eine Liste (ein Array) von Daten zurückgibt. Ab Zeile 13 bis 16 liefert das Model einfach nur festgelegte Texte zurück, daher wir hier nun erstmal ein Ergebniss sehen wollen. Es ist wie ein Notizzettel, auf dem steht, was der Titel und die Nachricht sein sollen.

Die Zukunft die ihr erarbeiten müsst: In einem echten Projekt würde dieses Model nicht nur feste Texte zurückgeben. Es würde hier stattdessen die Datenbank-Klasse (Database.php) aufrufen und mit SQL-Befehlen die aktuellen Daten aus MySQL abfragen. Das ist aber eure Arbeit. Hier erarbeiten wir nur wie wir ein MVP erzeugen in PHP.

Wir gehen über zur „View/home.php“ Datei

Hier können wir nun einfach anfangen unsere Webseite zu Designen und den Inhalt an den passenden Stellen anzuzeigen. In diesem Fall ist der Code:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo htmlspecialchars($pageTitle); ?></title>
    <style>
        body { font-family: sans-serif; text-align: center; padding-top: 50px; }
        h1 { color: #333; }
    </style>
</head>
<body>

    <h1><?php echo htmlspecialchars($pageTitle); ?></h1>
    <p><?php echo htmlspecialchars($welcomeMessage); ?></p>

</body>
</html>

Das einzige wichtige zum erklären sind hier die 3 PHP Zeilen:

  • <title><?php echo htmlspecialchars($pageTitle); ?></title>
  • <h1><?php echo htmlspecialchars($pageTitle); ?></h1>
  • <p><?php echo htmlspecialchars($welcomeMessage); ?></p>

Sie kümmern sich darum an den passenden Stellen die Textelemente einzubauen, die wir über die „HomeModel“ festgelegt haben. Einfach oder?

Nun habt ihr ein vollständiges MVP Konstrukt in PHP für euch erstellt und wie er merken solltet. Ist das ganze kein Hexenwerk. Im Gegenteil, es kann sehr einfach sein und wird halt eher immer dann schwieriger wenn man mehr Elemente einbaut.

Feedback?

Wie hat euch diese Hilfe und Erklärung gefallen? Gerne gebt mir doch Feedback. Wünscht ihr euch in Zukunft Videos dazu oder ist eine Textbasierte Erklärung für euch vollkommen in Ordnung? Bitte bewertet doch in den entsprechenden Sternen.

Bewertung:

Seiten: 1 2

Kommentare

Ein Kommentar zu „Web MVP Anwendung schreiben“

  1. […] um Wartbarkeit, Flexibilität und kontrollierte Weiterentwicklung. Vor kurzen haben wir uns mit der MVP Struktur in PHP befasst. In diesem Fall kommen genau hier nun als nächste wichtige Idee Feature Flags ins […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert