Klasse innerhalb einer anderen Klasse instanzieren
Hallo zusammen,
ich habe da ein Problem, nachdem ich schon seit gestern rumgoogle - bisher ohne Erfolg.
Deshalb möchte ich euch (die wahren Freaks) mal fragen.
Ich habe in 2 verschiedenen (Klassen-) Dateien "MDB2.php" (Datenbank-Klasse aus PEAR) und "Customer.php" Klassen definiert.
Nun habe ich folgendes vor:
Ich möchte einen Kunden aus der Datenbank auslesen und benutze dazu die Klasse "Customer" und die Methode "findByUserID"
Code: In Zwischenablage kopieren (nur IE)
Wie instanziere ich die Klasse MDB2 aus der Klasse Customer heraus, so dass ich auch auf deren Methode "query" zugreifen und ausführen kann?
Ich habe bereits versucht, mir require_once() die Datei MDB2 einzubinden. Wenn ich dies innerhalb der function findByUserID tue functioniert das auch. Es gibt doch aber bestimmt elegantere Lösungen, um die Klassenabhängikeiten darzustellen, ohne die benötigten klassen in jede Funktion einzubinden?
Meine Lösung entspricht bestimmt nicht den Vorstellungen der OOP-Konventionen und macht ein Projekt schnell unübersichtlich.
Please HELP me.
Ich bin für jede Hilfe sehr dankbar.
Vielen Dank und viele Grüße
Antworten
Du kannst die Klasse genauso instanzieren, wie auch außerhalb der Klasse, oder globale Variablen benutzen, oder aber den Objekt als Parameter übergeben.
2.
Code: In Zwischenablage kopieren (nur IE)
3.
Zitat:
johnpatcher postete
Du kannst die Klasse genauso instanzieren, wie auch außerhalb der Klasse, oder globale Variablen benutzen, oder aber den Objekt als Parameter übergeben.
OK - danke.
Das Problem ist nur, dass es auch bei register globals=off funktionieren muss.
Ich dachte es gäbe vielleicht noch eine schönere Lösung, als sämtliche Objekte als Parameter zu übergeben, da man ja die DB-Klasse in nahezu allen anderen Klassen benötigt und vielleicht auch noch andere Klassenabhängigkeiten hinzu kommen.
Wenn mehrere Klassen miteinander kommunizieren sollen ist das ja auch nicht die schönste Lösung.
Trotzdem vielen Dank
4.
Was hat denn Register Globals damit zu tuen ?
Und eine weitere Möglichkeit, die ich oben vergessen habe zu erwähnen, aber vermutlich die "sauberste" ist, wäre ein Singleton Pattern !
5.
http://www.phpforum.de/forum/showtopic.php?threadid=65956
Ich persönlich bevorzuge eine Registry, ich hab bis jetzt noch nichts gscheiteres gesehen... aber ist vielleicht auch Geschmackssache...
6.
Ich habe mir eine object factory Klasse gebastelt, die alle Objekte verwaltet und erstellt. Nach Wunsch wird eine weitere Referenz erzeugt oder ein neues Objekt instanziert.
Gruß