Sven Rautenberg: class FOO extends BAR

Beitrag lesen

Moin!

Hi,

aber wie muss es jetzt richtig sein auch wenn ich stat parent:: $this verwende funktioniert es mit dem $conn nicht?

Was logisch ist.

Du hast eine Instanz der Klasse "datenbank" in der Variablen $db. Mit der Instanz stellst du die DB-Verbindung her.

Dann hast du - davon vollkommen unabhängig - eine Instanz der Klasse "user_delete" in der Variablen $del_user, mit der du eine Löschoperation durchführen willst.

Dein Problem ist nun: Woher weiß die Instanz in $del_user, dass die Instanz in $db eine Datenbankverbindung hergestellt hat? Du sagst es ihr nicht? Du übergibst keinen Verweis/Pointer/Methode/sonstwas.

Würdest du dagegen einfach nur eine Instanz von "user_delete" erzeugen, dort die Datenbankverbindung herstellen, und dann löschen (indem du mit $this arbeitest, um die allgemeine DB-Methode aufzurufen), dann würde es gehen.

Deine Klassenstruktur ist aber sowieso etwas fragwürdig. Warum trennst du DB-Klasse und User-Löschen-Klasse als Erweiterung der DB-Klasse? Ich würde das alles in eine Hauptklasse packen. Denn wie wahrscheinlich ist es, dass du zwei verschiedene User-Löschen-Funktionen benötigst - und das auch noch unter _demselben_ Namen?

Da du im Endeffekt die Vererbung der Klassen nur als mäßigen Include-Ersatz benutzt, kannst du auf die Vererbung eigentlich auch genausogut verzichten - IMHO.

- Sven Rautenberg