Cube kurz vor Release

Nur noch wenige Wochen und es ist soweit. Mein selbst entwickeltes PHP-Framework names “Cube” ist kurz davor, veröffentlicht zu werden. Vor 4 Tagen gab es nochmal ein größeres Update auf Version 0.8 - ob noch eine Version 0.9 vor dem RC kommen wird, bleibt noch offen. Doch da ich hier zum ersten Mal über das ansonsten geheim gehaltene Projekt berichte, werde ich einmal den Sinn und die Features von Cube erläutern:

Cube ist ein kleines Framework und kann und soll nicht mit kommerziellen Riesen, wie Cake, Solar, Seagull, etc konkurrieren. Es ist in der Größe sehr flexibel, da es eine austauschbare Komponenten-Funktion nutzt und eine Plugin-API anbietet. Auf diese Art und Weise ist es sowohl für kleinere private Homepages, als auch für größere und komplexe Projekte geeignet. Es lässt sich zum Beispiel als Basis für ein Blog-System oder ein Forum nutzen.

Noch ist die Anzahl der Komponenten und Plugins sehr begrenzt, aber das wird sich mit der Zeit ändern, da immer wieder andere Anforderungen an ein auf Cube basierendes Projekt gestellt werden, wie zum Beispiel eine SOAP-Komponente oder ein facebook-Plugin.

Elementar in Cube ist die aufgeräumte Ordner-Struktur. Es gibt einen Ordner mit Actions, also den Dateien wo festgelegt wird, was wann wie und wo angezeigt wird. Eine Action ist der wichtigste Teil einer Seite, sie bestimmt was passiert. Falls man bestimmte Funktionen mehrmals braucht, kann man diese in eine Komponente in den Ordner components/ auslagern. Desweiteren gibt es einen weiteren Ordner space/, wo sonstige Code-Schnipsel Platz finden, die weder als Komponente noch als Action agieren. Ebenfalls im Root liegt der Ordner ajax/, wo wie der Name schon sagt, die “Anfragen-Beantworter” für asynchrose Requests (mittels Ajax) gespeichert werden. Vielleicht fragt sich nun der eine oder andere, ob das Framework denn mehr beinhalte als nur eine vorgegebene Ordnerstruktur. Der eigentliche Code liegt im Ordner core/ und wird anfangs von einem Switch aufgerufen.

Der Switch ist die einzige Möglichkeit, auf PHP-Dateien innerhalb des Frameworks zuzugreifen, das heißt, dass alle Anfragen über diesen Switch laufen, der nach Bedarf verschiedene Actions und Controller einbindet.

Drei Ordner sind noch übrig, beim ersten (js/) ist die Funktion schwerlich zu übersehen. Dann ist da die library/. Dort kommen zum Beispiel Dateien mit großen Arrays von allen Ländern oder ähnlichem herein, sowie alle Sprach-Dateien.
Zu guter Letzt der Style-Ordner. Dieser ist wiederum in 4 Unterordner unterteilt:

  • templates/ - Hier kommen alle Templates herein
  • snippets/ - Dieser Ordner ist für kleinere Design-Schnipsel, die öfters und in verschiedenen Kontexten gebraucht werden
  • css/ - Stylesheets
  • graphics/ - Für Grafiken, die mit dem Design zusammenhängen. Nicht für normale Fotos oder Ähnliches

Soweit der Aufbau der Ordner. Und was macht Cube jetzt genau?

Cube bietet leichten Zugang auf die Funktionen und Daten in Komponenten, Snippets, etc. Will man zum Beispiel eine Datenbankabfrage machen, genügt es folgenden Code zu schreiben:

$db_users = $db->sel(”SELECT * FROM user”);

$user_hans = $db->sel(”SELECT * FROM user WHERE name LIKE ‘hans’”, 1);

Die erste Zeile führt eine Datenbankabfrage über die MySQL-Komponente aus, die automatisch geladen wird, sobald sie das erste Mal benötigt wird. Die Variable $db_users ist nun ein assoziatives Array, mit dem wir über $db_users[12]['email'] zugreifen können. Wenn wir allerdings wissen, dass die Abfrage nur ein Ergebnis zurückgibt ist es doch umständlich jedes Mal $user_hans[0]['email] zu schreiben. Stattdessen bewirkt der optionale Parameter 1 am Ende der Abfrage, dass der Datensatz direkt zurückgegeben wird und man nun über $user_hans['email'] auf die Daten zugreifen kann, was wesentlich komfortabler ist.

Dies war ein kleiner Einblick in das kommende Framework Cube, hier noch ein kleiner Überblick, was ebenfalls in das System integriert ist:

  • ein Dispatcher, der das “event driven development” implementiert
  • Eine Art Singleton-Klasse, die alle exisitierenden Instanzen aller Klassen überwacht und bei Bedarf Referenzen zurückliefert
  • Eine Catcher-Klasse, die die Kommunikation zwischen den Klassen ermöglicht
  • Eine umfangreiche Debug-Klasse, die ausführliche Berichte über alle von Klassen ausgeführten Funktionen, alle Template-Zuweisungen, mySQL-Abfragen, Events, … liefert.
  • Zwei Error-Klassen (dev & user), die je nach Art entweder simple Fehlermeldungen oder detaillierte Informationen zu den Klassen und Methoden, die den Fehler verursachten, liefern.
  • Eine Template-Klasse, die zahlreiche Funktionen für die dynamische Erstellung eines HTML-Headers enthält

Natürlich wächst der Funktionsumfang stetig, wobei gleichzeitig viel Wert auf die schlanke Anzahl der benötigten Dateien und die hohe Performance gelegt wird.

Falls noch Fragen zu technischen oder organisatorischen Aspekten offen sind, bitte ich um einen Kommentar oder eine E-Mail an mich.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google

Tags: ,

3 Kommentare on “Cube kurz vor Release”

  • Hey, hört sich gut an, falls du iwie Hilfe brauchst (Design) meld dich einfach mal^^

    Chris

  • Klingt auf jeden Fall sehr interessant.
    Werde wohl mal deinen RSS-Feed abonieren muessen:D

  • Klingt sehr interessant :) Freue mich schon drauf, mal über den Code zu schauen.

    Falls du Interesse hast, dass ich bei Designpicks.de darüber schreibe, meld dich einfach mal.

Schreibe einen Kommentar

Name (benötigt)
Email (benötigt)
Website
Kommentar