Inhalt
Das Model des MVC-Patterns
Die Model-Klasse greift auf die physikalischen Daten des Content Management Systems zu, also auf den Beitrag oder die Kategorie auf der Festplatte.
MVC Design Pattern: Das Model
In diesem Basic-CMS wird ein Flatfile System genutzt, folglich verwendet das Model den PHP-Befehl file_get_contents() zum lesen einer Datei. Soll stattdessen eine Datenbank verwendet werden, kann der Dateizugriff durch einen Datenbank-SELECT ausgetauscht werden.
class Model
{
public $logo;
public $title;
public $content;
public $description;
function __construct($url)
{
$this->pd = new Parsedown();
$file_content = file_get_contents($url);
$this->logo = Dipper::parse(explode('–––', $file_content)[1])['Logo'];
$this->title = Dipper::parse(explode('–––', $file_content)[1])['Title'];
$this->description = Dipper::parse(explode('–––', $file_content)[1])['Description'];
$this->content = $this->pd->text( explode('–––', $file_content)[2] );
//$this->content = explode('–––', $file_content)[2];
}
function __get($value)
{
return $this->$value;
}
function __set($key, $value)
{
return $this->$key = $value;
}
}
Das Model
Im Beitrag zum Controller bereits angeschnitten, wird das Model-Objekt im Controller erzeugt und ihm eine URL der zu ladenden Beitragsdatei mitgegeben. Model öffnet sodann die Beitragsdatei und zerlegt die YAML-Struktur mit Hilfe von Dipper in ein Array. Die Key-Value Paare des Metabereichs werden in den Klassenvariablen $title, $logo, $description,... gespeichert. Diese werden dann im Controller zum füllen der View verwendet.
Das Attribut $content ist zwar nicht bestandteil der Beitrags-Struktur, dennoch soll der eigentliche Beitragstext über ein Attribut im Controller zur Verfügung stehen, daher wird $content gesondert erzeugt. Damit der Beitragstext auch in HTML umgewandelt werden kann, wird mit $this->pd->parse() der Markdownparser angewiesen, den Inhalt in HTML zu übersetzen. Ist das nicht gewünscht, müssen Sie die auskommentierte Zeile aktivieren.
Markdown-Parser
Damit das Model den eigentlichen Beitragstext aus dem MD-Format in reines HTML umwandeln kann, läd es zusätzlich den Parser Parsedown und erhält als Rückgabe den Beitragstext vollständig in HTML umgewandelt.
YAML bzw. YML-Parser
Der obere Teil des Beitrags verwendet eine YAML-Struktur in Form von Key-Value Paaren im YAML-Format, um diese leicht auszulesen, wird Dipper in das Model geladen und der Inhalt übergeben. Dipper liefert dann ein Array mit den Keys an das Model zurück.
Oliver Lohse
2024-02-13
ein eigenes CMS entwickeln programmieren
post
Kontakt@Oliver-Lohse.de