Sven Rautenberg: Thema verfehlt - Problem gelöst

Beitrag lesen

Moin!

Ich wüsste jetzt nicht, was Model, View und Controller für fachliche Gemeinsamkeiten haben, so dass sie eine Basisklasse rechtfertigen.

Die Core-Klasse stellt z.B. die Datenbankverbindung bereit, die wird dann von den meißten Models und Controllern genutzt.

Schlechte Idee. Damit machst du diese Core-Klasse zu einem Gott-Objekt, welches Kenntnis über alle möglichen Zusammenhänge hat - und sowas ist ganz schlecht erweiterbar.

Datenbankzugriff ist etwas, was keinesfalls zentral gelagert gehört. Es ist ein Aspekt, der unter Umständen sehr flexibel gehandhabt werden muss, denn WELCHE Datenbank wird denn z.B. angesprochen? Und mit welcher Methode? Nur mal als Beispiele: MySQL oder Postgres? Oder MySQL via mysql, mysqli oder PDO-Extension ansprechen? Oder anstelle der relationalen Datenbank was völlig anderes?

Deshalb gehört Datenbank-Zugriff isoliert in eine zugehörige Klassengruppe - die "Single Responsibility" in SOLID.

Ok, und noch ein Grund, warum eine DB-zugreifende Core-Klasse blöd ist: Der Controller hat keinerlei Veranlassung, auf die Datenbank zuzugreifen. Dafür hat er seine Models. Und die Models haben auch keine Veranlassung, die Datenbankzugriffe in sich selbst zu tragen, denn die sind dafür da, die in der DB gespeicherten Daten abzufragen (über eine DB-Klasse) und gegenüber dem Controller bzw. dem View passend zu repräsentieren.

- Sven Rautenberg