Rolf B: Wie Darstellung und Inhalt trennen?

Beitrag lesen

problematische Seite

Hallo borisbaer,

der Unterschied zwischen einer Methode (Funktion einer Klasse) und Funktion ist, dass die Methode das Objekt als Kontext hat und damit Daten bereitgestellt bekommen kann.

Wenn ich deine Karten objektorientiert darstellen wollte, würde ich dies tun:

  • Eine Klasse "Karte" erstellen. Diese Klasse besitzt eine Eigenschaft "Hintergrund" für das Hintergrundbild und eine Eigenschaft "Elemente", worin ein Array mit den Kartenelementen steht. Und dann hat die Klasse eine Methode "Zeichne", woraufhin sie das HTML für sich selbst ausgibt und für alle Elemente die Zeichne
  • Eine abstrakte Klasse "Kartenelement" erstellen, bspw. mit einer Methode "Zeiche()". In der abstrakten Klasse tut diese Methode nichts.
  • Eine Klasse "Marker", abgeleitet von "Kartenelement", erstellen. Der Marker weiß, wo der Referenzpunkt des Markers ist und wie der Text und der Verbindungsstrich in Bezug auf den Referenzpunkt anzuordnen sind. Und er überschreibt die "Zeichne" Methode vom Kartenelement.

Gebrauch: Kartenobjekt erzeugen, mehrere Kartenelemente (z.B. Marker) erzeugen und der Karte zuordnen. Dann $karte->Zeichne() aufrufen. Und der Rest geschieht automatisch 😉

In einer high-level Form ist das schnell beschrieben. Konkret muss man sich das schon ordentlich erarbeiten. Da kommt dann vieles zusammen: PHP, HTML, CSS, SVG, OOP und jede Menge WTF…

Rolf

--
sumpsi - posui - obstruxi