[OOP] Mehrere Klassen miteinander verbinden

  • Themenstarter Themenstarter ByeBye 182971
  • Beginndatum Beginndatum
B

ByeBye 182971

Hallo zusammen,

ich bin noch relativ neu in OOP und wollte fragen, wie ich es am besten 3 Klassen miteinander verbinde...

Ich habe eine Templateklasse, eine Termineklasse(um temrine zu adden,deleten, usw) und eine Datenbankklasse.

Ich möchte:
  1. nun mit der Termineklasse auf die Datenbankklasse zugreifen um Querys zu senden etc.
  2. mit der Terminklasse auf die Templateklasse zugreifen, um möglichst einfach den inhalt zu parsen

Wie geht das am einfachsten bzw ist das überhaupt Sinnvoll?
 
Zuletzt bearbeitet von einem Moderator:
Wenn ich das nun richtig verstanden habe möchtest du deiner Terminklasse die beiden Basisklassen (Templateklasse und Datenbankklasse) vererben. Richtig?

Das ist nämlich nicht möglich. Eine Klasse kann immer nur eine Basisklasse erben.
 
eben.....

das ist voll doof^^

was gibt es denn da rein theoretisch für andere Möglichkeiten?
 
Er möchte sie nicht vererben, er möchte auf sie zugreifen.

Ich lerne auch gerade OOP, aber ich mache es so:

Ich erstelle einfach ein neues Objekt der Klasse auf die ich zufreifen will in der Klasse in der ich gerade arbeite ... ungefähr so :

PHP:
class testKlasse {
  private $objAndereKlasse;

  private function eineTestFunktion(){
    $this->objAndereKlasse = new AndereKlasse();
    $this->objAndereKlasse->tueIrgendwas();
  }

  public __destruct(){
    unset($this->objAndereKlasse);
  }
}

Wie gesagt bin ich noch am lernen und weiß nicht ob es so richtig ist.

Gruß soyo
 
Hallo,

also so schwer ist das nicht, wenn du von der Terminklasse auf die methoden der Datenbankklasse und der Templatklasse zugreifen willst musst du in der Terminklasse einfach zwei Objekt der entsprechenden Typen intialisieren

zb so
PHP:
class TerminKlasse
{
  private $DataenbankObjekt;
  private $TemplateObjekt;

  public function __construct()
  {
    $this->DataenbankObjekt = new DatenbankKlasse();
     $this->TemplateObjekt = new TemplateKlasse();
  }
}
dann kannst du innerhalb der Terminkasse auf alle methoden und Attribute zugreifen die du in den anderen 2 Klassan mit "public" sichtbar gemacht hast
 
Im Prinzip kann man das so lösen wie ihr es vorgeschlagen habt. Aber ist es von der Überlegung her nicht sinnvoller grade die Datenbankklasse zu vererben?

Ich benötige ja nur Methoden der Klasse und kein komplett neues Objekt.
 
Wenn ich eine MySQL Verbindung aufbauen will, benötige ich meistens ein Objekt. Genauso sieht es bei der Template-Klasse aus. Ich will nicht sagen das man generell ein neues Objekt erstellen soll wenn man auf andere Klassen zugreifen will, aber bei diesen beiden Klassen find ich das mehr als sinnvoll und vor allem auch nötig.
 
Wie gesagt, ich würde da von einem anderen Denkansatz rangehen und sehe keine Verwendung dafür extra ein Objekt anzulegen.
Aber es führt ja bekanntlich nicht nur ein Weg nach Rom ;)
 
Du könntest auch die Klassen voneinander erben lassen.

class datenbankklasse {

}

class templateklasse extends datenbankklasse {

}

class termineklasse extends templateklasse {

}
 
und mit externds arbeitet ihr nicht so gerne oder wie?

also durch praktisch noch eine 4. klasse alle verbinden

EDIT: das was rotsch denkt ist glaub ich am besten

aber wierum mach cih das am besten nur damit ich weiß welche ich im nachhinein dann aufrufen muss


EDIT2:
hab nen interessanten artikel gefunden: http://www.devmag.net/webprog/php_class_nesting.htm

geht um klassen verknüpfungen also genau mein problem

trotzdem danke an alle antworter :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück