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.
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:
Schreibe den Code, wie du ihm im Controller haben möchtest.
Ergänze den Code im Model so, dass er gemäss deinen Vorstellungen funtkioniert.
Refactoring: TaskController@create
Refactoring: TaskController@edit
Refactoring: TaskController@update
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?
Last updated
Was this helpful?