Ich würde das genau so wie Thomas sehen, ehrlich gesagt. Ich selbst würde vermutlich die Exec-Instanz globalisieren, da alles andere irgendwie etwas schmutzig ist. Teile der Exec-Klasse in die DB-Klasse zu legen, ist natürlich sinnvoll... wenn es Sinn macht. (grandiose Bedingung >_<)
Wenn allerdings die Methode in die Exec Klasse gehört, sollte sie da auch bleiben. Das letzte, was ich wollen würde, wäre eine zweite Instanz der Exec Klasse im Scope der DB-Methode, weil das doppelter Speicherverbrauch wäre und die Instanzvariablen unterschiedliche Werte haben könnten (was natürlich u.U. nichts macht, wenn du eh keine verwendest).
Aber ich bin ein OOP-Noob, warte lieber noch, bis jemand Kompetenteres antwortet.
PS: Noch ein Grund für die Globalisierung: Was willst du denn machen, wenn du aus einer Funktion heraus die DB ansteuern möchtest? Da würdest du vermutlich gar nicht drüber nachdenken und entweder $GLOBALS['DB'] oder global $DB benutzen, oder?
Mhhh.. wie wärs wenn du der Datenbankklasse die Methoden und Eigenschaften der Exec Klasse eifnach vererbst?
Dann hast du zwei einzeln zu benutzende Klassen, die du leicht waten kannst, Hast aber trotzdem vollen Zugriff über die eine Klasse.
So würde ich das angehen, solang PHP5 Vererbung unterstützt.^^
--
For everything, there's a season, for everything there's a time...
Logisch unterstützt PHP5 Vererbung, das hat das noch grausamere Classen-Konstrukt in PHP4 schon getan.
Bei PHP5 würde ich anstatt das Objekt mit global zu globalisieren, mit statischen Methoden arbeiten.
ist imo schöner, als:
in jeder Funktion .
Damit die Classe immer gleich heißen, kann müsstest du logischer weise jede Version in eine eigene Datei auslagern.
Andere Möglichkeit währe, mit einer sogenannten singleton Classe/Function zu arbeiten:
mfG
Noch ein Grund für die Globalisierung: Was willst du denn machen, wenn du aus einer Funktion heraus die DB ansteuern möchtest? Da würdest du vermutlich gar nicht drüber nachdenken und entweder $GLOBALS['DB'] oder global $DB benutzen, oder?
...
Das wäre zum Beispiel so ein Problemfall. Ich könnte beispielsweiße die DB als Singleton nutzen, was ich aber nicht möchte, das ich gerne $this verwenden möchte.
Hier gehe ich gleich näher drauf ein.
Zitat von makkurona
Mhhh.. wie wärs wenn du der Datenbankklasse die Methoden und Eigenschaften der Exec Klasse eifnach vererbst?
...
Die Idee ist gar nicht so schlecht, aber für mich erscheint das nicht gerade als saubere Lösung. Desweiteren sind dann Methoden doppelt in Benutzung und das würde ich gerne vermeiden.
Zitat von Xardas der Dunkle
Damit die Classe immer gleich heißen, kann müsstest du logischer weise jede Version in eine eigene Datei auslagern.
Andere Möglichkeit währe, mit einer sogenannten singleton Classe/Function zu arbeiten:
mfG
...
Bei Singletons fehlt mir leider die $this Möglichkeit. Einige weniger restrikte Singletons kann man zwar zur Arbeit mit $this zwingen, aber genauer betrachtet erzeugt man dann eine normale Klasse und wenn es dumm läuft, erhält man in der zweiten Funktion, die ein $this verwendet und eine Klasse erzeugen möchte eine Fehlermeldung.
Hier noch ein Beispiel:
Ich versuche mich von der umständlichen Arraybildung zu trennen und sehe darin den Vorteil der OOP. In diesem Beispiel würde ich z.B. die Anzahl aller `Bewohner` der Stadt `Musterhausen` mit dem Nachnamen `Mustermann` zählen lassen:
Das könnte man auch mit nur einer Funktion lösen, beispielsweise:
--
«Wir können alles schaffen, wir brauchen nur genug dressierte Affen» - infinite monkey theorem