Software-Wiki
Advertisement
Mocovi
Entwickler Kai Dorschner
Aktuelle Version 0.9.7
(3. August 2011)
Betriebssystem plattformunabhängig
Programmier­sprache PHP
Kategorie Framework
Lizenz GPL Version 3 (Freie Software)
mocovi.de

Mocovi ist ein von Kai Dorschner in PHP geschriebenes quelloffenes Web-Framework.

Aufbau[]

Mocovi basiert auf dem MVC Entwurfsmuster und benötigt keine Datenbanken um Inhalte darzustellen. Das Model wird über XML Strukturen definiert. Die Controller Elemente sind in PHP5 Klassen geschrieben. Das View wird über eine XSL Transformation realisiert. Übersetzungen werden in entsprechende XML Dateien geschrieben und können alle Sprachen die durch UTF-8 abzubilden sind speichern.

Das System ist multidomain-fähig. Das bedeutet mit einer Installation können gleich mehrere Websites verwaltet werden. Diese können dadurch Ressourcen, wie z.B. Bildmaterialien, JavaScripte aber auch Views und Controller untereinander teilen. Außerdem werden schlanke, suchmaschinen-freundliche URLs erzeugt (benötigt das mod_rewrite Modul von Apache).

Beispiele[]

Das Modell[]

Die gesamte Seitenstruktur wird über eine model.xml abgebildet. Die Gliederung von Seiten ist simpel. "file" Elemente werden ineinander geschachtelt wodurch die Hierarchie sowie gleichzeitig das Menü der Seite hergestellt werden:

<?xml version="1.0" encoding="utf-8"?>
<xmlfs
  xmlns:xref="x-schema:refSchema.xml"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://mocovi.de/schema/xmlfs1.0"
  version="1.0"
  media="html"
  theme="mint"
  language="en"
  timezone="Europe/Berlin"
  >
  <file name="redirection" invisible="1" redirect="/home/foo" />
  <file name="home">
    <model>
      <root>
        <headline>Hallo Welt!</headline>
      </root>
    </model>
    <file name="foo">
      <model>
        ...
      </model>
    </file>
    <file name="bar">
      <model>
        ...
      </model>
    </file>
  </file>
</xmlfs>


Zudem werden an jedem Punkt XIncludes und XRef-Referenzen unterstützt, was es dem Benutzer ermöglicht Daten einer Stelle vollständig an eine anderen zu kopieren.

Jede Seite hat ihr eigenes Modell welches den Inhalt darstellt. Hier ein Auszug:

...
  <model>
    <root>
      <menu/>
      <content>
        <headline>Hallo Welt!</headline>
        <paragraph>Dies ist eine Beispielseite</paragraph>
      </content>
    </root>
  </model>
...

Die Controller[]

Die Controller sind vollständig in PHP5 Klassen geschrieben und laden lediglich Grundfunktionalitäten für den Umgang mit dem DOM-Objekt um das System möglichst schlank zu halten. Hier ein Beispiel für den "date" Controller, welche die Datumsanzeige steuert:

<?php
class date_control extends inline_control
{
  protected $dateTime;
  protected $defaultOptions = array
    ( 'format'    => 'Y-m-d\TG:i:s'
    , 'textToken' => ''
    );

  /**
   * @override
   */
  protected function getText()
  {
    if(($textnode = parent::getText()) instanceof DomElement)
      $text = $this->formatTime(strtotime($textnode->nodeValue));
    else
      $text = $this->formatTime(time());
    return $text;
  }

  public function formatTime($unixtime)
  {
    return date($this->getOption('format'), $unixtime);
  }
}


Wie im Beispiel zu sehen, erbt der date Controller von inline, welches lediglich Fließtexte darstellt. Somit wird "date" ebenfalls als Fließtexten dargestellt. Andere Controller wie "paragraph" beispielsweise erzeugen einen neuen Knoten im DOM.

Das View[]

Knoten können mittels XSLT selektiert und in eine beliebige Ausgabe transformiert werden. Hier ein Beispiel für eine HTML5 Ausgabe des "root" Knotens:

...
<xsl:template match="root">
  <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;&#xA;</xsl:text>
  <!-- &#xA; == Line Break -->
  <html xml:lang="{@language}" lang="{@language}">
    <xsl:call-template name="head" select="."/>
    <xsl:call-template name="body" select="."/>
  </html>
</xsl:template>
...

Weblinks[]

Info Sign  Dieser Wikipedia-Artikel wurde gemäß GFDL bzw. CC-by-sa mit allen Versionen importiert.
Advertisement