klein.php wird erwachsen
Der Router klein.php, den ich in meiner Blogsoftware Betablog nutze, hat vor wenigen Tagen einen Versionssprung von 1.1.0 auf 2.0.0 erhalten. Rikan7 saß mehrere Monate still in seinem Kämmerchen und hat heimlich an der neuen Version gearbeitet, die nun gemerged wurde.
Der Major-Versionssprung ist gerechtfertigt, da es kaum noch Ähnlichkeit mit der 1.* Version gibt. In hunderten von Commits ist ein völlig neuer Router entstanden, man hätte ihn genauso gut unter neuem Namen veröffentlichen können.
Was ist neu?
Das weiß ich selbst noch nicht ganz, da es so viele Commits sind. Am einfachsten ist vielleicht ein Vergleich der alten und der neuen API.
Was direkt auffällt, ist der neue Aufbau. Es gibt nicht mehr eine einzige Datei, sondern 19 Klassen in 19 Dateien. Außerdem liegen sie nun alle in ihrem eigenen Namespace. Damit wird die Notwendigkeit von php 5.3 immer deutlicher.
Entsprechend objektorientierter wurden damit auch die API-Aufrufe für das Routing. Man erzeugt nun erst eine Instanz von Klein
, auf der man dann die Klein::response()
Aufrufe durchführt.
Ausgaben werden nun nicht mehr durch einen Output Buffer abgefangen, sondern in den Controllern mittels return
zurückgegeben. Dabei wurde die einfache Verarbeitung von Views etwas zur Seite geschoben. Sie befindet sich nun in der Service-Instanz (auch ein neues Feature) und die korrekte Verwendung ist mir noch nicht ganz klar.
Neu sind auch die Validatoren für diverse übliche Eingaben (E-Mail-Adresse, URL, IP, ...).
Fazit
klein.php ist gewachsen, gewaltig gewachsen. Aus einem kleinen, minimalistischen Router ist eine objektorientierte Allzweckwaffe geworden. Im Moment ist der 2er-Branch noch nicht sehr ausgereift und ich würde mit der Verwendung noch ein wenig warten, bis er sich stabilisiert hat.
Eine Kehrseite hat das Ganze: Ich hatte klein.php gewählt, weil es eben so klein war und alles in eine Datei passte und mit einer minimalen API auskam. Eben deswegen werde ich vorerst auch bei der Version 1.1.0 bleiben, die für meine Ansprüche absolut ausreicht.