Von mir gibt es immer noch nichts Neues. Deshalb stelle ich mal kurz ein kleines Projekt von Blackflash, an dem ich mit mehr oder weniger sinnvollen Kommentaren nicht ganz unschuldig bin. Unter dem Namen “Bifrost” (Eigentlich “Bifröst“, ein Begriff aus der nordischen Mythologie) veröffentlichte er gestern den ersten Proof-of-Concept.
Brücken schlagen
Bifrost selbst ist mit minimaler Komplexität und hoher Performance auf kleine bis mittelkleine Seiten ausgelegt. Das fällt besonders durch die gerade mal 4 Klassen (in der ersten Veröffentlichung) auf, mit den andere Anwendungs-Frameworks bei Weitem nicht auskommen. Möglich war dies durch das von ihm selbst formulierte Konzept der Einstiegspunkte. Besonders auffällig dabei ist, dass die Beispiel-Einstiegspunkte prozedural gehalten sind; Ein auffälliger Unterschied zu dem sonst (im weistesten Sinne) vergleichbaren Page-Kontroller-Konzept, die eine Kontroller-Klasse auf genau eine Seite abbilden.
Zu Gunsten der Performance verzichtet Blackflash zum Beispiel auf sonst übliche (interne) Überprüfungen. Verwendet man etwa den hauseigenen Autoloader und versucht eine Klasse zu instanzieren, die nicht existiert, versucht Selbiger nur die anzunehmenden Datei nach zu laden. Sollte also Datei und/oder Klasse fehlen, gibt es ein PHP-Fehler, weil entsprechende Prüfung auf Existenz oder Lesbarkeit der Datei fehlen. Es liegt also am Entwickler sauber zu arbeiten.
Klein, aber brauchbar?
Der Schwerpunkt lag (wie bereits erwähnt) auf kleinere Seiten, bei denen größere Frameworks übertrieben wären. Ob Bifrost diesen reduzierten Anforderungen gerecht wird, ist noch unklar, es fehlt noch der Praxistest. Auf den ersten Blick fehlt schon mal ein mit Plugins vergleichbares System, was aber noch kommen soll, vorerst angedacht als Event-basiertes System. Eine Datenabstraktionsschicht ist allerdings nicht geplant, zu weit gehen dort die Meinungen auseinander.
Zwischen den Rufen nach neuen Features sollte man sich trotzdem den Zweck weiter vor Augen: Geringe Komplexität und Effizienz. Damit sollte man bei größeren Anforderungen einen der großen Frameworks ins Auge fassen, anstatt die Vorteile Bifrosts zu verbauen. Eben die geringe Komplexität erlaubt es auch sehr einfach eigene Änderungen und Anpassungen schnell vorzunehmen. Als eierlegene Wollmichsau ist es allerdings nicht geeignet.
Ausblick
Wer eine kleine Umgebung für die eigene “Mein Haus, mein Auto, mein Boot”-Seite sucht, darf sich Bifrost gerne mal anschauen. Da es sich noch um eine frühe Entwicklungsversion handelt, darf man aber keine Wunder erwarten, jedoch ist Blackflash sicher für Hinweise offen
Ebenso hält sich Bifrost an einigen Stellen nicht an mittlerweile verbreite Konventionen: Es ist keine reine Objektorientierung und auf Verifikation von rein intern gehaltenen Daten wird bewusst verzichtet, das alles zu Gunsten der Einfachheit und Performance. Das vielleicht etwas Gewöhnung, bei 4 Klassen hat man aber auch das Konzept durchschaut.
Gruß,
KingCrunch
Update
Eine Korrektur: Auch Plugins sind nicht als Feature geplant, sondern sind auch den Entwicklern überlassen. Als eine Möglichkeit wurde mir aus erster Hand genannt, dass man die initialize()- bzw die shutdown()-Methode der Application-Klasse erweitert, um dort am Anfang oder am Ende der Methode die Plugins aufzurufen, weil es sowieso so Vorgesehen ist, dass die Application-Klasse erweitert wird.