Antwort #3 am: 10. Januar 2014, 14:58:31
Mach hinne, aber beginne mit einem Redesign oder vielleicht sogar besser mit einem Neudesign der Datenbank unter Berücksichtigung der referentiellen Integrität.
Schau mal hier:
http://www.peterkropff.de/site/mysql/referentielle_integritaet.htmEs geht also inzwischen einiges, und wenn Du ernsthaft an die Sache herangehen willst, solltest Du zumindest in Deiner Entwicklungsumgebung diese Geschichten berücksichtigen. Eine sofortige Fehlermeldung von der Datenbank ist allemal besser, als nach Wochen zu versuchen, die Ursache einer fehlenden Abhängigkeit aufzufinden.
Bezüglich der Klassenstrukturen: Objektorientierte Programmierung ist natürlich ein wunderschönes Modewort. In der Praxis zeigt sich allerdings, dass Systeme wie Magento oder Oxid, die das konsequent umgesetzt haben, um mindestens einen Faktor 10 lahmer sind, als das gute alte osCommerce, das fast ausschließlich prozedural ist.
Schon die Trennung von Layout und Programm ist mit Vorsicht zu genießen, weil sich das zwar toll anhört, aber in der Praxis nicht so doll funktioniert. Will ich bei z.B. bei osCommerce ein zusätzliches Feld aus der Datenbank anzeigen, so füge ich das in die Datenbank ein und zeige es an. Fertig.
Das ist schon bei Modified mit mehr Aufwand verbunden, weil ich das Feld ebenfalls im Programm einbauen muss, dann an das Template übergeben und anschließend ins Template einbauen muss.
Bei Oxid ist es oft klüger, die Finger davon zu lassen und die Funktionalität gleich ins Template einzubauen, ggfls. durch Erstellung einer neuen Smarty-Funktion.
Mein Fazit: Wir haben in einem Shop Geschäftsprozesse, die prozedural ablaufen. Einzelne Objekte, wie z.B. der Warenkorb, haben durchaus ihre Berechtigung. Das Gesamtpaket mit Gewalt in eine Klassenstruktur zu packen, halte ich hingegen für groben Unfug.
Sollte es jemand fertigbringen, einen Shop mit ähnlichem Funktionsumfang und ähnlicher Performance vollständig objektorientiert zu erstellen, leiste ich selbstverständlich Abbitte.