PHP Klassen

mtk-flo

Erfahrenes Mitglied
Hallo

Ich glaube ich habe einen Denkfehler in meinem Klassenmodell.

Und zwar:
ich habe 3 Klassen, die mir die Datenbank verbindung aufbauen.
In der Klassen selber (Kontruktor) sind die Verbindungsdaten hinterlegt.

Die 3 Klassen (CDatenbank.php) habe ich für 3 verschieden Homepages mit 3 verschiedenen Datenbanken die aber auf dem gleichen Webspace liegen.
Die 3 klassen sind bis auf die Verbindungsdaten identisch im Moment.

Wie kann ich die 3 Klassen trennen?
ich möchte manche Funktionen umschreiben, aber sie sollen den gleichen Methodennamen haben, wie die anderen.

Mein Script greift zwar auf den richten Konstruktor zu, aber es nimmt die "falschen" Methoden...

Wenn ich z.B.:

Code:
$db = new CDatenbank();  // Klasse A
$db->open(); // Verbindungsaufbau von Klasse B
$db->execute("....."); // Aufführungsmethode von Klasse B

Wieso nimmt er nicht die Methoden von Klasse A
 
Hey,


warum benutzt du 3 Klassen für die Verbindung zur Datenbank?
Und warum stehen deine Verbindungsdaten im Konstruktor?

Wenn ich dich richtig verstehe...
Ich würde erstmal im Konstruktor deine Verbindungsdaten ÜBERGEBEN ;)
also _construct($host, $user, $pass).

Und wenn du Methoden brauchst, die anders als die "anderen" sind,
dann kreiere eine neue Klasse, die von der Mutterklasse erbt.

Hoffe, dass ich dir helfen konnte :)

mfg
bo
 
ich habe die Dateien oberhalb meines root-Pfades, also nicht per Browser erreichbar.
Deswegen stehen Sie im Konstruktor, da ich nicht will, dass die Daten abgefangen werden.

Also du meinst:

Klasse A, die alles enthält, aber die Verbindungsdaten übergeben bekommt.
Und dann eine Klasse B erstellen die von A erbt, mit der veränderten Methode!?
 
Wenn ich z.B.:

Code:
$db = new CDatenbank();  // Klasse A
$db->open(); // Verbindungsaufbau von Klasse B
$db->execute("....."); // Aufführungsmethode von Klasse B

Wieso nimmt er nicht die Methoden von Klasse A

Hi,

wie kommst du darauf, dass $db->open(); von Klasse B benutzt wird?
Oder besteht eine Vererbungsbeziehung zwischen A und B?
Denn wenn nicht, dann ist $db->open(); auch von Klasse A.

Grüße,
Martin
 
Ich benutze ZEND, und da wird angezeigt, dass der die Klasse B benutzt (es wird ein anderer Pfad angegeben)...
Daher glaube ich, dass er klasse B benutzt, außerdem werden die änderungen in Klasse A nicht gemacht...
 
Hi,

so kann ich dir leider nicht weiterhelfen. Wenn du den Code der Datenbank-klassen postest, kann dir besser geholfen werde.

Grüße,
Martin
 
Zurück