Teil 4 Das Model (MVC)


Das Model ist für die Datenbeschaffung in Ihrem Content Management System verantwortlich und greift auf Beiträge zu.

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 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.


Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Sprachen bzw. Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 25 Jahren arbeite ich in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen.

Oliver Lohse
2024-02-13
ein eigenes CMS entwickeln programmieren
post
Kontakt@Oliver-Lohse.de

Datenschutz

Die Webseite verwendet keinerlei Tracking- oder Speichermechanismen, die einen Rückschluss auf das Leserverhalten und Ihre Identität zulassen. Die Webseite verwendet keine Cookies, denn Cookies haben einen schlechten Ruf.

Impressum

CMSWorkbench ist eine Entwicklerseite über meine Arbeit im Bereich der Content Management Systeme. Die vielen Codeschnipsel sind im wesentlichen als kleine Notizzettel zu werten als das es ausgereifte Beiträge wären.