10.07.2015 Aufrufe

5.15 Objektorientierte Webentwicklung - valentinkoch.de

5.15 Objektorientierte Webentwicklung - valentinkoch.de

5.15 Objektorientierte Webentwicklung - valentinkoch.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Table-Data-Gateway-Pattern bereits kennengelernt haben.Auch hier haben Sie wie<strong>de</strong>r die zwei Möglichkeiten, entwe<strong>de</strong>r ein Mapper-Objekt für zwei Tabelleno<strong>de</strong>r für je<strong>de</strong> Tabelle ein eigenes anzulegen.Für <strong>de</strong>n Fall, dass Sie nur einen einzigen Mapper verwen<strong>de</strong>n wollen, sieht <strong>de</strong>r PHP-Co<strong>de</strong> beinahe soaus, wie bei einem Mapper für eine Tabelle. Sie haben eine Klasse für das Daten-Objekt, das nun allerdingsdie Attribute bei<strong>de</strong>r Tabellen enthält und <strong>de</strong>n Mapper, <strong>de</strong>r sich nun um bei<strong>de</strong> Tabellen kümmernmuss.Beispielsweise muss die fin<strong>de</strong>()-Metho<strong>de</strong> nun einen SQL-JOIN über bei<strong>de</strong> Tabellen durchführen, uman alle benötigten Attribute heranzukommen. Die loesche()-Metho<strong>de</strong> muss nun nicht mehr ein SQLDELETEausführen, son<strong>de</strong>rn eines für je<strong>de</strong> Tabelle.Von außen sieht man jedoch nichts davon, ob hier die Daten einer Tabelle o<strong>de</strong>r mehrerer Tabellen verwaltetwer<strong>de</strong>n.1:n-BeziehungDie 1-n-Beziehung besteht aus zwei Daten- und zwei Mapper-Klassen, jeweils eine für je<strong>de</strong> Tabelle. DieMapper müssen sich darum kümmern, die Beziehung zwischen <strong>de</strong>n bei<strong>de</strong>n Tabellen abzubil<strong>de</strong>n, alsozum Beispiel alle Einträge in <strong>de</strong>r n-Tabelle zu löschen, wenn <strong>de</strong>r entsprechen<strong>de</strong> Eintrag <strong>de</strong>r 1-Tabellegelöscht wird. Ansonsten wür<strong>de</strong>n die Fremdschlüssel-Beziehungen brechen.Diese Relation wird später in dieser Lektion komplett ausprogrammiert. Daher wer<strong>de</strong> ich an dieserStelle nicht weiter darauf eingehen.n:m-BeziehungDie n-m-Beziehung sieht von außen exakt so aus, wie die 1-n-Beziehung. Es gibt für die bei<strong>de</strong>n Haupt-Tabellen je eine Daten- und Mapper-Klasse. Die Zwischen-Tabelle erhält keine eigenen Klassen in PHP.Der einzige Unterschied zur 1-n-Beziehung besteht darin, in <strong>de</strong>n passen<strong>de</strong>n Metho<strong>de</strong>n (speichere(),fin<strong>de</strong>(), loesche() ...) die Zwischen-Tabelle durch SQL-JOINS zu berücksichtigen.<strong>5.15</strong>.17.2 Die Sicht <strong>de</strong>r Daten-Objekteclass Kategorie{private $id = 0;private $name = '';private $eintraege = array();...public function addEintrag(Eintrag $eintrag){$eintrag->setKategorie($this);$this->eintraege[] = $eintrag;}}public function istNeu(){$test = true;if ($this->id > 0) {$test = false;}return $test;}class Eintrag{private $id = 0;private $text = '';private $kategorie = null;...

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!