Etwas abstrakt bleibt es doch noch. Es gibt im Projekt zwei Arten von Elementen: Die einen enthalten andere Elemente, andere enthalten Text. Daher wird es zwei unterschiedliche Arten geben, wie zum einen getContent()
funktioniert, und wie der Inhalt der Instanz hinzugefügt wird.
Zwei weitere abstrakte Klassen bieten sich da an, die die entsprechenden Methoden implementieren.
ALeo_Sitemap_Xml_StringContent
/*
Wird von Elementen erweitert, die nur eine
Zeichenkette als Inhalt haben.
Author: Hermann J. Leopold
Email: hermann.leopold@leopoldnet.de
Date: 2017-02-10
/*
require_once('ALeo_Sitemap_Xml.php');
abstract class ALeo_Sitemap_Xml_StringContent extends ALeo_Sitemap_Xml
{
// Darum geht es: Die Zeichenkette
private $_sContent;
/*
Hier wird der Inhalt übergeben.
/*
public function setStringContent($sString)
{
/* Generell dienen die Ausnahmefehler dazu,
Programmfehler zu vermeiden.
/*
// NULL ist nicht erlaubt.
if (is_null($sString)) {
throw new InvalidArgumentException("NULL statt Zeichenkette");
}
// Der Typ muss String sein,
// oder konvertierbar sein.
if (!is_string($sString)) {
throw new InvalidArgumentException("Keine Zeichenkette (aka String)");
}
// Alles OK
$this->_sContent = $sString;
}
/*
Und hier wird der Inhalt wieder zurück
gegeben.
/*
protected function getContent()
{
if (is_null ($this->_sContent)) {
$this->_sContent = '';
}
// Damit nichts passiert, werden Zeichen, die
// XML verwendet, umgewandelt.
return html_entity_decode($this->_sContent, ENT_XML1);
}
}
ALeo_Sitemap_Xml_StringContent.php