Mammut Framework

Entwicklerhandbuch:: Grundlagen

Grundlagen

Systemvoraussetzungen

Die minimalen Vorraussetzungen sind PHP >= 5.3 mit aktivierter SPL und Perl RegEx (pcre) Erweiterung, welche standardmäßig installiert werden sollten.

Mammut verwenden

Im Allgemeinen ist es sinnvoll, das Framework in ein Unterverzeichnis zu entpacken, beispielsweise "lib". Um das Framework zu verwenden benötig man grundlegend nur die folgenden Zeilen Code:

// Einbindung des Verzeichnisses in den include-Pfad
set_include_path(get_include_path().PATH_SEPARATOR.'.\lib');
 
// Laden des Fraemworks
define('USE_MAMMUT',true);
require('Mammut/lib.mammut.php');
 
// BEISPIELE: Laden einer Klasse bzw einer Bibliotek
use \Mammut\DB\DB;
importlib('Mammut.array');

Die erste Anweisung erweitert nur den Suchbereich für "include"-Befehle um das Basisverzeichnis. Um einen direkten Zugriff auf die Dateien zu verhindern brechen alle Mammut-Dateien die Ausführung ab, sofern die Konstante "USE_MAMMUT" nicht definiert ist - daher wird diese vor der eigentlichen Einbindung der Basisbibliothek "lib.mammut.php" definiert.
Diese Einbindung sollte in der dargestellten Form ohne Anpassung funktionieren, ansonsten ist die Zeile "set_include_path" zu prüfen.

OOP in Mammut

Objektorientierung ist in der Geschichte von PHP noch ein eher neues und daher teilweise unausgegorenes Feature. Lange Zeit wurden keine Namensräume unterstützt, und die Möglichkeit Methoden zu überladen existiert nur in etwas seltsamer Form. Seit PHP 5.3 sind ein paar dieser Dinge etwas besser geworden, jedoch muss man noch immer viel Disziplin aufbringen, um sauberen und wiederverwendbaren Code zu erstellen.

Da die Entwicklung des Frameworks schon mit PHP 5.1 begann, und noch immer Hoster und Utilitys auf die Pre-5.3-Zeit ausgelegt sind (beispielsweise Dreamweaver, der min. 5.5 nichts mit der Namensraumsyntax anzufangen weis), sind bisher noch einige Workarounds und Konventionen im System enthalten. Um Namenskollisionen zu verhindern gibt es eine simple Regel: Mammut Framework Klassen beginnen ihren Namen mit MF, beim Mammut CMS mit MM. Andere Entwicklungen sollten ihre eigenen 2-3 Buchstaben-Prefixe definieren und verwenden. Alle Unterorder werden dem Hauptnamen mit CamelTyping vorrangestellt. So beginnen beispielsweise alle Klassen des Image-Paketes (und somit Ordners) mit MFImage*.

Um eine Klasse zu laden existiert die Funktion import($classpath). Diese läd die entsprechende Klassendatei, falls noch nicht geschehen.

Mammut verwendet in den neueren Versionen die Autoloader-Funktion von PHP. Hierdurch ist die Verwendung der Klassen einfach durch die Verwendung des vollen Namens oder durch Verwendung der "use"-Anweisung möglich.

use Mammut\DB\DB;
echo DB::_VERSION_;

$info = new \Mammut\DB\TableInfo('demo');

Dies läd die DB Klasse bzw erstellt ein neues TableInfo-Objekt aus dem DB Framework Paket.

Für Funktionen in Biblioteken ist dies leider nicht möglich. Um normale Biblioteken zu laden existiert hierfür die Funktion importlib($ident):

importlib('Mammut.array');

Dies läd die Hilfsbibliotek mit Feldfunktionen.

Um allgemeine Fehler in der Programmierung zu verhindern, sind einige "Features" in den meisten Klassen (alle die von \Mammut\StrictObject abstammen) des Frameworks nicht vorhanden. So können meist NICHT dynamisch weitere undefinierte Attribute an vorhandene Objekte angefügt werden. Dies hat den Grund, dass alle Attribute aus der Klassendefinition ersichtlich seien sollen und Schreibfehler bzw ungewünschte Nebeneffekte nicht ohne Fehlermeldung möglich sind.