đź“‹
M307 - Interaktive Webseiten mit Form
  • Interaktive Webseite mit Formular erstellen
  • Tag 1
    • 01-Interaktive Websites
    • 02-Client-Server-Infrastruktur
    • 03 Einrichtung Entwicklungsumgebung
    • 04 PHP
      • 01 EinfĂĽhrung
      • 02 PHP Konfiguration
      • 03 PHP Ăśbersicht
      • 04 Variablen
      • 05 Script Einbindung
      • 06 Arrays
      • 07 Kontrollstrukturen
      • 08 Interne Funktionen
      • 09 Benutzerdefinierte Funktionen
      • 10 Klassen
      • 11 Best Practices
      • 12 Links
    • 05 Strukturierung
      • Aufbau eines MVC (Schritt fĂĽr Schritt)
    • 06 PHP Aufgaben
      • 01 Bottles of Beer
      • 02 Einfacher Spamfilter
      • 03 Clowns
      • 04 Pixelgenerator
      • 05 Todo-Liste
      • 06 Login-Funktion
      • 07 Navigation
      • 08 Gemeinsames Template
  • Tag 2
    • 01 Formulare Theorie
      • 01 Informationsgruppierung
      • 02 Design- und Strukturgrundlagen
      • 03 Verarbeiten von Formulardaten
      • 04 Validieren von Formulardaten
    • 02 JavaScript Theorie
      • 01 Einfuehrung
      • 02 JavaScript Ăśbersicht
    • 03 Ăśbungsaufgaben zu JavaScript
      • 01 Schere, Stein, Papier
      • 02 Whack-a-Button
    • 04 JavaScript Validierung
      • 01 Validierung
      • 02 Vor- und Nachteile
      • 03 Aufgabe
  • Tag 3
    • 01 Datenbankanbindung
      • 01 Datenbankanbindung
      • 02 Datenbankverbindung
      • 03 Datenbankabfragen
      • 05 Datenlöschung
      • 04 Datenspeicherung
      • 06 Datenmanipulation
      • 07 Refactoring
    • 02 Testing
    • 03 Security Aufgaben
      • 01 Gruppenarbeit
        • 01 Arbeitsauftrag
        • 02 Cross-Site-Scripting (XSS)
        • 03 SQL-Injections
        • 04 Local File Inclusion
      • 02 Eigenes Formular absichern
      • 03 Karl's Website
    • 04 Applikationssicherheit
Powered by GitBook
On this page
  • Aufgabe: Refactoring Task-Liste (Gemeinsam)
  • Konstruktor
  • Refactoring: Controller
  • Refactoring: TaskController@delete
  • Refactoring: DB-Helper

Was this helpful?

Export as PDF
  1. Tag 3
  2. 01 Datenbankanbindung

07 Refactoring

Im Moment werden sämtliche Aufgaben des Tools von den Controllern und den Views ausgeführt. Die Logik ist zwar von der Darstellung getrennt, jedoch ist die Datenverarbeitung noch ein integrativer Bestandteil der Logik, beziehungsweise des Controllers.

Dies führt früher oder später zu folgenden Problemen:

  • Einige Code-Elemente mĂĽssen doppelt aufgefĂĽhrt werden (DRY)

  • Ă„nderungen der Infrastruktur (z. B. Datenbank-Technologie) fĂĽhrenr zu einem grossen Umstrukturierungsaufwand.

  • Die Code-Struktur im Controller wird unĂĽbersichtlich.

  • Der Code ist schlecht lesbar.

Um genau diese Problemstellungen zu umgehen, wird mit einem Model gearbeitet. Das Model ist für die Entgegennahme, Bearbeitung und Speicherung der Daten zuständig. Für unser Beispiel, hat dies die folgenden Auswirkungen:

Aufgabe: Refactoring Task-Liste (Gemeinsam)

Erstelle nun das Model app/Models/Task.php und binde dieses in der bootstrap.php ein.

Erstelle die Klasse Task. Unser Ziel ist es nun, dass wir den Code in den einzelnen Controller lesbarer machen, Wiederholungen vermeiden (DRY) und fast die komplette Datenbank-Kommunikation in das Model Task auslagern.

Konstruktor

Als erstes Erstellen wir einen Konstruktor für die Klasse. Dieser soll sämtliche Attribute bei der Instanzierung einer Klasse entgegennehmen und im erstellten Objekt abspeichern.

class Task
{
    public $id;
    public $title;
    public $completed;

    function __construct($title, $completed)
    {
        $this->title = $title;
        $this->completed = $completed;
    }
}

Refactoring: Controller

Der Controller soll so angepasst werden, dass sich nur noch die Logik darin befindet. Alles andere soll durch das Model Task ausgefĂĽhrt werden. Gehe dabei immer in zwei Schritten vor:

  1. Schreibe den Code, wie du ihm im Controller haben möchtest.

  2. Ergänze den Code im Model so, dass er gemäss deinen Vorstellungen funtkioniert.

Refactoring: TaskController@create

$task = new Task("Titel des Tasks", false);
$task->create();

Refactoring: TaskController@edit

$task = (new Task)->find($id);

Refactoring: TaskController@update

$task = new Task($_POST['title'], $completed);
$task->update($_GET['id']);

Refactoring: TaskController@delete

Versuche nun eigenständig noch die Logik und Datenverarbeitung für das Löschen vom TaskController zu trennen.

Refactoring: DB-Helper

Findest Du eine einfache Möglichkeit, den PDO-Verbindungsaufbau in eine einfache Helper-Funktion auszulagern?

Previous06 DatenmanipulationNext02 Testing

Last updated 3 years ago

Was this helpful?