[OOP] Mehrere Klassen miteinander verbinden

  • Themenstarter Themenstarter ByeBye 182971
  • Beginndatum Beginndatum
Praktisch eine 4te Klasse?
Nein, es existieren nur die 3 von dir genannten Klassen. Mit dem Schlüsselwort "extends" teilst du der Klasse mit, dass sie eine andere Klasse sozusagen "erweitert". Sie erbt alle Eigenschaften und Methoden der vererbenden Klasse.

Du kannst nun mit einer speziellen Variable "$this" auf die Eigenschaften/Methoden der vererbenden Klasse zugreifen.

Zum Beispiel:
$this->connect();
 
ok aber wie gestalte ich am besten die folge?

class DB extends Termine?

class Termine extends DB?

ich möchte es auch jedenfall so gestalten dass ich die db klasse öfters nutzen kann!
lassen wir mal die template klasse weg

demnach müsst eich doch praktisch
class Template extends DB

dann beispiel:
$termin = new Termin
$termin->showall();

ohne irgendwas mit db machen zu müssen

bzw wie connecte ich dann die db? muss ich das dann auch über termin machen? weil cih den db connect eigentlich schon in meiner index.php habe
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
also wenn du im eigentlichen Sinne der Objektorientierung arbeiten willst, solltest du in deinem konkreten Beispiel nicht mit Vererbung 'extends' arbeiten. Die ist eigentlich eher für Spezielisierungen gedacht. Zum Beispiel wenn du in einem Programm Kunden, Liferanten etc. hast die im großen und ganzen ähnlich sind, kannst du dir eine Klasse Firma anlegen und deren Eigenschaften an die spezialisierten Klassen Kunde und Lieferant weitervererben. In deinem Fall handelt es sich aber eher um eine Aggregation. D.h. Deine Terminklasse besteht aus einer Datenbankklasse und einer Templateklasse. Dies sollte man eigentlich so lösen, dass man Objekte vom Typ Datenbankklasse und Templateklasse in der Terminklasse intialisiert. Wenn du dies aus Performencegründen nicht so lösen willst, steht in der Objektorientierung auch das Schlüsselwort static zur Verfügung, welches einen Zugriff auf Methoden von Klassen ermöglicht ohne diese initialisieren zu müssen. zb.:
PHP:
class test
{
	static function testmethod()
	{
		return 'Testausgabe';
	}
}
echo test::testmethod();
Generell solltest du aber bedenken, wenn Performence das Wichtigste bei deinem Programm ist solltest du keine OOP verwenden, denn die ist bei allen sehr großen Vorteilen die sie hat (in der Erstellung, Wartung und Wiederverwertbarkeit) doch noch die langsamste in der Ausführung.
 
danke hans jörg für deine antwort

also mit der performance habe ich keine probleme, da mein programm maximal 5 Personen gleichzeitig nutzen würden.

ich hol jetzt die datenbank klasse einfach mit global und hab mir eine kleine template funktion gemacht die im moment noch das gleiche leistet!
 
Zurück