Ich kann es ja gar nicht oft genug sagen: f9 soll kein von Grund auf neu entwickeltes Framework sein, sondern wenn möglich Code aus anderen Quellen integrieren. So auch beim Session-Management: Es ist fast eins zu eins aus — wieder einmal — dem Epiphany-Framework übernommen.
- 10 subjektive Kriterien für ein gutes PHP (micro-) Framework
- f9 – noch ein neues PHP-Micro-Framework
- Eine beispielhafte f9-Anwendungsarchitektur
- Der f9-RequestDispatcher
- Die f9-View-Klassen
- Ein erstes Mini-Beispiel mit f9
- Die f9-Datenbank-Klasse
- Sessions in f9
- Der f9-Dependency-Injection-Container
- Views und Request mit dem Bean-Container verbinden
Zwar finde ich die epiphany-Lösung noch nicht ganz perfekt, aber als erster Ansatz ist es auf jeden Fall gut genug und bevor ich keinen besseren Ansatz habe, will ich mich mit Kritik auch lieber zurückhalten. Deshalb gleich zur aktuellen Lösung. Die Änderungen, die ich bisher am Original-Code vorgenommen habe, sind wieder eher gering. Im wesentlichen beziehen sie sich auf den Namespace und darauf, das Konzept etwas besser in f9 zu integrieren. Um ehrlich zu sein: Es ist mehr Kosmetik als anderes.
Session-Typen
Der Vorteil der epiphany-Session-Lösung ist, dass man zwischen drei Typen von Session-Speicherung wählen kann. Diese Flexibilität ist immer gut, allerdings ist in f9 Moment nur die Möglichkeit der nativen php-Speicherung integriert. Die gewünschte Flexibilität wiederherzustellen, steht aber auf meiner Liste ziemlich weit oben. Ich möchte es nur etwas anders machen, als die bei epiphany gelöst ist, deshalb ist das erstmal aufgeschoben und ich werde auf die im Code angelegte Flexibilität hier nicht weiter eingehen.
Namespace
Als Teil des f9-Frameworks liegen die Session-Klassen im net\f9-Namespace. Will man sie benutzen, ist die entsprechende Klasse also zunächst per use
einzubinden:
use net\f9\SessionFactory;
Eine Factory für Sessions
Um eine neue oder die bereits bestehende Session zu bekommen, reicht es, sie mit der SessionFactory
-Methode getSession()
anzufordern.
$session = SessionFactory::getSession();
Das Session-Objekt, das von der Factory zurückgegeben wird, hat drei öffentliche Methoden: set($name, $value)
zum Setzen eines Wertes in der Session, get($name)
zum Abfragen und delete($name)
zum Löschen eines Wertes:
$session = SessionFactory::getSession(); $session.set('msg', 'Hallo!') echo $session.get('msg'); $session.delete('msg');
Und das ist schon alles. Setzen, Lesen und Löschen, mehr braucht’s nicht und mehr kann man dazu im Moment auch nicht schreiben. Ein Beispiel dürfte sich auch erübrigen, im abschließenden Beispiel wird das Session-Handling integriert sein.
Downloads
Die beiden Klassen für das vorläufige Session-Handling in f9 — die SessionFactory
und die native php-Implementierung der Speicherung — finden sich hier:
[download id=“7″].
Das komplette f9-Framework mit allen Klassen und Beispielen:
[download id=“12″]