Weil es Spaß und Sinn macht: Eine abstrakte Klasse für XML-Elemente.
Der Vorteil einer abstrakten Klasse: Methoden, die sich nicht ändern, müssen nicht bei jeder abgeleiteten Klasse wiederholt im Code erscheinen. Es könnten auch Traits verwendet werden, jedoch sind sie nicht für den Fall gedacht, dass die Methoden zur gleichen Klassenhierarchie gehören.
ALeo_Sitemap_Xml
/*Hier werden bereits alle Methoden implementiert,die alle Klasssen vom Typ 'ILeo_Sitemap_Xml'gemeinsam haben.Author: Hermann J. LeopoldEmail: hermann.leopold@leopoldnet.deDate: 2017-02-08/*require_once('ILeo_Sitemap_Xml.php');abstract class ALeo_Sitemap_Xml implements ILeo_Sitemap_Xml{/* Hier muss bei den konkreten Klassender Name aka Symbol zurückgegeben werden. /*protected abstract function getSymbol();/* Hier wird der Inhalt des Elementszurück gegeben. Da dies entwederText oder andere Elemente seinkönnen, muss auch diese Methode vonjedem Element überschrieben werden./*protected abstract function getContent();/* Mit den Attributen des Elements könnteman viel Spaß haben; eigene Klassen,schön mit addAttribute eine Listehinzufügen...Da aber nur ein Element überhauptAttribute hat, die dazu noch stetsgleich sind, habe ich dieseeinfache Methode bevorzugt. /*protected function getAttributes(){// Gibt es Attribute, muss// diese Methode überschrieben// werdenreturn '';}/* Hier die wichtige konkreteKlasse -> das Element wird erstellt /*public function toString(){// Die vielen Zeilen haben einen Grund:// Es sieht so besser im Blog aus.. 😄$sReturn = ILeo_Sitemap_Xml::csTagAuf . $this->getSymbol();$sReturn .= $this->getAttributes() . ILeo_Sitemap_Xml::csTagZu;$sReturn .= $this->getContent();$sReturn .= ILeo_Sitemap_Xml::csTagAuf;$sReturn .= '/' . $this->getSymbol();$sReturn .= ILeo_Sitemap_Xml::csTagZu;return $sReturn;}}
ALeo_Sitemap_Xml.php
Dank der getContent()-"Problematik" kann ich noch zwei abstrakte Klassen schreiben. Hurra – und ich sollte mal ein Klassendiagramm erstellen. Es könnte sich lohnen 😃
