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.
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?