extends?

Unicate

Erfahrenes Mitglied
Hy Leutz!
Ich habe 3 Klassen
CMySQL , CUser, CMainpage
In meinem Script wird zuerst eine Instanz von CMySQL erstellt, die heisst $MYSQL
dann eine des $Users und dann die $MAIN

Im Konstruktor der Klasse CMySQL stelle ich eine DB verbindung her und prüfe ob alle Daten stimmen, wenn nicht kommt ne Fehlermeldung.

In der Klasse CMainpage will ich ich Zugriff auf die Datenbank haben.
Ist es sinnvoll die Klasse CMySQL mit CMainpage zu erweitern?

Das Problem ist folgendes:
Ich rufe in der Klasse CMainpage weitere Klassen auf welche auch die Klasse CMySQL benötigen.

Nun möchte ich aber nicht 100 Instanzen von CMySQL haben, da das den Arbeitsspeicher meines Servers sinnlos vergeudet, auch wenn das jetzt mal ein wenig übertrieben ist, aber eine die global wäre, wäre doch praktischer oder?
Man würde Arbeitsspeicher und Zeit sparen.

Was sagt ihr dazu?
Wie würdet ihr das lösen?
 
Es wäre noch ganz gut zu wissen welche PHP-Version du nutzt.

Ich gehe jetzt mal von v5.x.x aus.

Du könntest die CMySQL-Klasse als Singleton umsetzen.
Siehe dazu: http://www.tutorials.de/forum/php-tutorials/188436-singletons-mit-php5.html.
So ist sichergestellt, dass du immer nur eine Instanz hast.

Am geschicktesten wäre es meiner Meinung nach eine Instanz der CMySQL-Klasse an die CMainpage-Klasse zu übergeben.
So ist auch sichergestellt, dass die CMainpage-Klasse nicht bzw. nur leicht von Änderungen in der CMySQL-Klasse betroffen ist.

greetz
daddz
 
Ja, sorry das hatte ich ganz vergessen.
Ich verwende PHP4, ganz einfach, weil PHP4 auf jedem Server ohne Aufpreis zu haben ist und PHP5 auch PHP4 versteht ;)
 
Also dann musst du aufs Singleton leider verzichten!

Aber alles andere sollte funktionieren wie ich es geschrieben habe!

greetz
daddz
 
Unicate hat gesagt.:
In der Klasse CMainpage will ich ich Zugriff auf die Datenbank haben.
Ist es sinnvoll die Klasse CMySQL mit CMainpage zu erweitern?
Erweitern (ableiten von) einer Klasse ist in der OOP immer dann sinnvoll, wenn folgender Satz Sinn ergibt: „B ist ein A“ (A ist die Mutterklasse, B die abgeleitete Klasse)
 
Ok, habs nun so gelößt:
Klasse CMainpage bekommt eine Instanz von den Klassen CUser und CMySQL als Membervariablen $MYSQL && $USER, da CMainPage nur 1x aufgerufen wird, ist das I.o. wenn ich nun andere Klassen in CMainPage verwende übergebe ich die Instanz, wie daddz meinte...
Ich muss dann per "$this->MYSQL->Methode()" auf die Methoden zugreifen, was aber immer noch übersichtlich genug ist.

Meine Frage nun:
Das ganze soll wenn die Zeit gekommen ist PHP5 fähig gemacht werden.
Geht dann der "doppelte Zugriff" (also 2x "->") noch? Also das er funktionierten wird ist klar, aber ob das PHP5 norm ist oder eher nicht...?
 
Zuletzt bearbeitet:
Zurück