Zusammenspiel von drei Klassen.

Es geht um den Kern für ein PHP-Projekt, dass auf drei Klassen aufbaut.

Das sind:
  • Eine Klasse für MySQL.
  • Eine Klasse für die Templates.
  • Eine Klasse für die Fehlerbehandlung.

Problem:
Ich weiss nicht, wie ich die Klassen verbinden soll.

Alle weiteren Klassen die kämen (User-Klasse z.B.), müssten dann von den oben genannten Klassen erben.

Ich hab' schon über verschiedene Möglichkeiten nachgedacht:
  • Fehlerklasse erbt von Templates, MySQL dafür von der Fehlerklasse. Alle weiteren Klassen erben von der MySQL-Klasse.
  • Die Klassen sind weitestgehend static, und ich greife direkt auf die Methoden zu ohne die Klassen vorher zu instanzieren.
  • Ich packe alle drei Sachen in eine große Klasse.

Ich denke, Multiple Inheritance würde das Problem beheben, aber leider gibt es die ja nicht in PHP5, und die Work-Arounds für die Mehrfachvererbung sind auch nicht so das Wahre.

Ich weiss, dass es dafür keine eindeutige und richtige Lösung gibt, aber ich habe keine Erfahrungen mit so großen Projekten.

Bin für jede Hilfe dankbar!

liebe Grüße,
Daniel
 
Diese drei Klassen haben doch, ausser einer gewissen (auch nur teilweisen) Abhängigkeit, nichts miteinander zu tun.

Nur weil du ein Haus bauen möchtest, bist du nicht sofort das Kind vom Architekten.
Man vererbt nicht, nur weil man Funktionalitäten der "Eltern" in die "Kinder" bekommen möchte.
Ich empfehle dir hierzu besonders mal den Artikel in der Wikipedia. Bitte lies über die erste Zeile hinaus, besonders die Beispiele dürften dir einiges verdeutlichen.

Nun zu deinem Problem.
Du möchtest Vererbung vermutlich nutzen, um in einer Klasse auf die Methoden der anderen Klassen zugreifen zu können. Zum lösen dieses "Problems" brauchst du aber keine Vererbung. Du holst dir einfach die benötigten Objekte in die Klasse, in der du sie benötigst.
Entweder übergibst du die Objekte an eine Methode und machst sie damit der Klasse bekannt (passive Methode), oder du benutzt eine Methode der Klasse um dir die Objekte der anderen Klassen zu holen. Hier solltest du dich mit dem Begriff des Singleton-Patterns bekannt machen. Dieser löst dein Problem vermutlich am elegantesten.
 
Zurück