Hi,
Ich hab ein bisschen Probleme mit den OOP Begriffen abstract und interface.
Soweit ich das bis jetzt verstanden hab ist interface eine Art Schablone für eine Klasse, die sicherstellt, dass eine implementierte Klasse genauso so aufgebaut ist, wie es die Schablone vorgibt.
Bei abstract sind nicht alle Methoden vorgegeben sondern es können auch eigene Methoden enthalten sein.
So warum ich mich damit auseinandersetze ist folgendes:
Ich möchte mehrere Datenbanksysteme mit einer Klasse ansprechen können.
Diese Klasse heißt bei mir einfach DB und gibt die Struktur wie z.B. die Methoden connect(), query(), close() usw. vor.
Da ich in der DB Klasse noch eine nicht vorgebene Methode habe nehme ich also abstract und gebe die oben gennanten Methoden vor.
Das ganze funktioniert aber nicht so wie ich es gerne haben möchte. Ich hätte gerne eine Klasse DB die "überschreibare" Methoden enthält, eine Methode der Klasse DB überprüft welches Datenbanksystem benutzt werden soll und includet dann die Datei mit der entsprechenden Klasse nehmen wir als Beispiel mal MySQL. Es wird also die mysql.php Datei eingebunden diese überschreibt durch den "extends" Befehl die Methoden der DB Klasse. Soweit so gut ich möchte nun also einfach auf die Methoden der Klasse DB zugreifen die nun ja die richtigen Methoden für das DBsystem enthalten aber da diese ja abstract ist geht das nicht...
Könnt ihr mir vll helfen, hab ich irgendwas falsch verstanden oder gibt es einen Weg das zu umgehen?
Checker
Ich hab ein bisschen Probleme mit den OOP Begriffen abstract und interface.
Soweit ich das bis jetzt verstanden hab ist interface eine Art Schablone für eine Klasse, die sicherstellt, dass eine implementierte Klasse genauso so aufgebaut ist, wie es die Schablone vorgibt.
Bei abstract sind nicht alle Methoden vorgegeben sondern es können auch eigene Methoden enthalten sein.
So warum ich mich damit auseinandersetze ist folgendes:
Ich möchte mehrere Datenbanksysteme mit einer Klasse ansprechen können.
Diese Klasse heißt bei mir einfach DB und gibt die Struktur wie z.B. die Methoden connect(), query(), close() usw. vor.
Da ich in der DB Klasse noch eine nicht vorgebene Methode habe nehme ich also abstract und gebe die oben gennanten Methoden vor.
Das ganze funktioniert aber nicht so wie ich es gerne haben möchte. Ich hätte gerne eine Klasse DB die "überschreibare" Methoden enthält, eine Methode der Klasse DB überprüft welches Datenbanksystem benutzt werden soll und includet dann die Datei mit der entsprechenden Klasse nehmen wir als Beispiel mal MySQL. Es wird also die mysql.php Datei eingebunden diese überschreibt durch den "extends" Befehl die Methoden der DB Klasse. Soweit so gut ich möchte nun also einfach auf die Methoden der Klasse DB zugreifen die nun ja die richtigen Methoden für das DBsystem enthalten aber da diese ja abstract ist geht das nicht...
Könnt ihr mir vll helfen, hab ich irgendwas falsch verstanden oder gibt es einen Weg das zu umgehen?
Checker
Kommentar