Guten Abend zusammen – Heute gibt es einen Eintrag zu den so genannten „Micro-Frameworks“.
Ich weiß, eigentlich wollte ich Heute den letzten Teil der Reihe „Template-Engines im Vergleich“ posten, doch ich bin noch immer nicht dazu gekommen eigene Benchmarks zu schreiben – Und bevor ich euch nun Woche um Woche vertröste wollte ich einen kurzen Abstecher in ein anderes Themengebiet wagen…

Was ist ein Micro-Framework genau?

Micro-Frameworks sind jene Frameworks die durch einen extrem schlanken Core und einfache Syntax bestechen. Zum Beispiel gibt es da das Fat-Free Framework (F3) (Version 2.0.13 – 785kb – Davon aber nur 60KB für den Core), Laravel (Version 3.2.7 – 2,5 MB), Slim (Version 2.1.0 – 171 KB) und silex (Version ? – 113 KB). Natürlich gibt es noch viele weitere, doch für Heute möchte ich mich mit dieser Auswahl begnügen!
Micro-Frameworks erlauben euch in der Regel mit der einfachen Einbindung des Frameworks sofort loszulegen ohne euch (in erster Linie) groß um Konfigurationen kümmern zu müssen. Die modernen Frameworks setzen meistens PHP 5.3 voraus und machen sich dessen Features zunutze (Lamdba Funktionen, Closures, …).

Schaut man sich die folgenden Syntax Beispiele an, fällt einem schnell auf das sich die Systeme im Kern bzw. in der Nutzung sehr stark ähneln (können!):

Fat Free Framework

// Beispielcode für "F3".
require_once 'f3/base.php';

F3::route('GET /', function {
    echo 'Hello, world!';
});

F3::run();

Laravel

// Beispielcode für "Laravel".
require_once 'laravel/laravel.php';

Route::get('/', function() {
    return "Hello world!";
});

Slim

// Beispielcode für "Slim".
require_once 'Slim/Slim.php';

\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->get('/', function () {
    echo "Hello, world!";
});
$app->run();

Silex

// Beispielcode für "Silex".
require_once 'silex/autoload.php'; 

$app = new Silex\Application(); 
$app->get('/', function($name) { 
    return 'Hello world!'; 
}); 
$app->run();

Aber natürlich bietet jedes der Frameworks seinen eigenen speziellen Code und Konfigurations-Möglichkeiten – Die Code-Beispiele oben zeigen „wie es aussehen kann“ und sollen in erster Linie die Ähnlichkeit der verschiedenen Systeme darstellen!

Die stärken der Frameworks soll die einfache Nutzung und Performance sein. Diese Ziele werden durch die schlanke API so wie den sinnvollen Methoden-Namen erreicht, wie wir im Quellcode oben sehen.
Idealerweise wird die Verwendung so einfach, das auch „nicht-Entwickler“ kleinere Seiten mit einem (SEO-freundlichen) Routing aufbauen können. Häufig findet man auch Plugins oder Module die mit wenigen Zeilen Code eine Template-Engine einbinden – Ein weiterer Schritt in Richtung „einfach„.

Wo wir grade das Thema Plugins/Module angeschnitten haben – Die Micro-Frameworks stehen „den Großen“ hier in nichts nach. Häufig wird eine ganze Reihe an Komponenten beim Download mitgeliefert… Das Spektrum reicht von einfachen Datenbankabstraktionen über ORM Systeme hin zu Authentifizierungslösungen, Cachingmechanismen und (wie schon erwähnt) Template-Engines.

Micro Frameworks mit REST

In jedem Beispiel-Code von oben finden wir irgendwo das Schlüsselwort „GET“ – Das steht für einen GET Request (Also wenn wir einfach im Browser eine URL eingeben und diese aufrufen). Darüber hinaus gibt es noch „POST“ (Wird häufig bei Formularen genutzt), so wie „PUT“ und „DELETE“. Mit diesen vier Methoden erlaubt uns die API schnelle und einfache Reaktion auf die verschiedenen Request-Methoden – Die Micro-Frameworks liefern uns damit eine funktionsfähige REST-Schnittstelle, die sich hervorragend für eine eigene Web-API anbietet – Ein Framework ist schließlich nicht NUR dazu da, eine Webseite umzusetzen!

Setzt man sich als Entwickler nun mal an die Systeme ran, und separiert die verschiedenen Elemente (Routen, Request-Methoden, Controller, Models und Templates) etwas, so lässt sich mit Hilfe der „Micro-Frameworks“ auch ohne größeren Aufwand eine komplexe Anwendung bauen ohne alles in eine große (unübersichtliche?) Datei zu quetschen.

Denn wie es so schön heißt:

Das Framework ist nur ein „Werkzeug“.

Minimalismus Ahoi!

Man sollte sich übrigens nicht von der Größe täuschen lassen! Grade „F3“ fällt stark auf – Das ganze Framework wurde in eine einzige Datei gepresst. Alle weiteren Dateien im Verzeichnis sind Plugins.

Einige Systeme treiben den minimalismus auf die Spitze, so z.B. „TweetMVC„, welches aus vielen einzelnen Komponenten besteht welche jeweils in einen Tweet passen (also aus bis zu 140 Zeichen bestehen) oder auch „Twitto„.
Wobei es sich bei solchen Systemen eher um „Spaß-Projekte“ handelt, die man lieber nicht für den produktiven Einsatz in Betracht ziehen sollte 😉

Einen sehr ausführlichen Bericht zu Laravel gibt es übrigens im PHP Magazin (Ausgabe 6.12).

Mit diesen abschließenden Worten möchte ich mich für Heute auch schon wieder verabschieden. Ich könnte mir vorstellen in den nächsten Wochen etwas näher auf einige der genannten Micro-Frameworks einzugehen 🙂

4 comments on “Micro-Frameworks auf dem Vormarsch

  • vll noch erwähnenswert, dass beim f3 von den 700kb über 500kb für die doku, channellog und gpl.txt draufgehen.. wirkt ja hier so riesig im vergleich zu den anderen

    • Hallo Roman, du hast Recht – Ich war mir zwar sicher das ich nur die Core-Dateien gezählt habe, aber da liege ich wohl falsch. Das „nackte“-Framework selbst hat knapp 60KB – Wird ausgebessert!

  • So übersichtlich wie das Framework ist auch dessen Website , auf der sich eine Installationsanleitung sowie die Dokumentation findet. Auffällig ist der fast ausschließliche Gebrauch von statischen Methoden. In der Regel verwendet man Microframeworks allerdings auch nicht für große Projekte, weshalb eine Instanz des Frameworks völlig ausreichend ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.