TYPO3weblog.de

Das Blog zu TYPO3, JavaScript und openSource

t3n Magazin - Jetzt im Abo bestellen

Entries Tagged ‘PHP’

Adventskalender 2008: Türchen 19

Eine Weihnachtsfeier jagt die nächste, auf der einen Seite ist es immer sehr nett, auf der anderen Seite gerät man schnell in Streß. Naja, heute ein wenig verspätet nun das Türchen 19. Tim hat Euch gestern im Türchen 18 gezeigt, wie man mit TypoScript schicke GMENUs erzeugt. Heute möchte ich wieder ein wenig PHP Code zeigen.

Diesmal geht es um die Benutzung der Session in TYPO3. In der Regel genügt nur eine Zeile Code um einen Wert in die Session zu schreiben oder wieder heraus zu holen. Schauen wir uns erstmal an, wie man etwas in die Session schreibt:

$GLOBALS["TSFE"]->fe_user->setKey("ses", "tx_myext", $data);

Die Funktion setKey() erwartet drei Parameter:

  1. Type: Dieser kann “ses” oder “user” sein.
  2. Key: Eindeutiger Ident für eine Session Variable
  3. Data: Die Daten die gespeichert werden sollen.

Die beiden Typen “ses” und “user” unterscheiden sich wesentlich. Während der Typ “ses” nur temporär die Daten speichert, also genau so lange, wie die Session besteht (Session-Cookie), ist es mit dem Key “user” möglich, die Daten auch über mehrere Sessions hinweg zu speichern, wobei diese an den FE-User gekoppelt werden.

Der Key sollte so gewählt werden, dass man nicht in Konflikt mit anderen Extensions kommt. Am besten benutzt man seinen Extension-Key dafür.

Die Daten die man speichern will kann jede beliebige PHP Variable sein, sogar komplette Objekte kann man ablegen.

So, nun wollen wir uns den Wert mal wieder raus holen, auch dies geht sehr schnell und einfach:

$data = $GLOBALS["TSFE"]->fe_user->getKey("ses", "tx_myext");

Die Methode getKey erwartet nur zwei Parameter, die Bedeutung ist die gleiche wie bei setKey().

Das Leben kann so einfach sein, wenn es nicht ab und an diese kleinen fiesen Sonderfälle gibt ;)

Nehmen wir mal an, man erzeugt ein PDF oder eine AJAX-Antwort, dann gibt man das PDF aus und steigt mit einem exit() oder die() aus. In diesen Fällen, reicht ein einfacher Aufruf von setKey() nicht aus. Denn TYPO3 kann dann die Daten nicht automatisch speichern. Aber hier schafft der folgende Code Abhilfe:

$GLOBALS["TSFE"]->fe_user->setKey("ses", "tx_myext", $data);
$GLOBALS["TSFE"]->fe_user->storeSessionData();

Mit storeSessionData() sorgen wir dafür, dass TYPO3 umgehend die Werte speichert. Sehr häufig wird gerade auf die letzte Zeile verzichtet, was in der Regel auch funktioniert, jedoch nur so lange, wie kein Fehler auftritt oder das Script vorzeitig beendet wird.

Fröhliches Session-Handling Euch allen :)

Kommentare deaktiviert

Adventskalender 2008: Türchen 9

Tim stellte Euch gestern im Türchen 8 die neue Blog-Extension vor. Ich selber bin inzwischen ein überzeugter Wordpress Blogger, habe mir fest vorgenommen mir t3blog auch mal anzusehen.

Heute möchte ich Euch drei Bücher vorstellen und ans Herz legen. Zu allen dreien kann ich sagen, dass ich diese gelesen haben und bei meiner täglichen Arbeit nicht mehr missen möchte.

Buchtip Nummer 1: TYPO3 Kochbuch

[amtap amazon:isbn=389721430X]

Buchtip Nummer 2: TypoScript – kurz & gut

[amtap amazon:isbn=3897215365]

Buchtip Nummer 3: PHP Design Patterns

[amtap amazon:isbn=3897214423]

Auch wenn es mir am Anfang etwas schwer viel die Beispiele aus dem Buch PHP Design Patterns auf TYPO3 anzuwenden, möchte ich inzwischen keine Extension mehr anders programmieren. Das Buch ist meine tägliche Bibel geworden.

Comments (10)

Adventskalender: Türchen 23

Heute habe ich einen Tip für Extension Entwickler. Manchmal muss man die Größe von Dateien ausgeben, jedoch speichert TYPO3 diese Dateigrößen in der Regel in Bytes. Um nun eine für den normalen Menschen lesbare Ausgabe zu bekommen, bietet die Klasse t3lib_div eine nette Funktion zur Formatierung:

t3lib_div::formatSize($sizeInBytes, $labels='');

Während sich der erste Parameter wie ich denke von selbst erklärt, bedarf der zweite eine kurze Erläuterung. Der zweite Parameter ist eine durch “|”-Zeichen separierte Liste von Labels für Bytes, Kilobytes, Megabytes und Gigabytes. Der Standard ist ” | K| M| G”. In Deutschland zumindest ist man eine andere Schreibweise gewohnt, also gleich mal ein Beispiel:

$fileSize1 = 370
$fileSize2 = 378880
$fileSize3 = 387973120
$fileSize4 = 397284474880

echo  t3lib_div::formatSize($fileSize1, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 Bytes
echo  t3lib_div::formatSize($fileSize2, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 KB
echo  t3lib_div::formatSize($fileSize3, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 MB
echo  t3lib_div::formatSize($fileSize4, $labels=' Bytes | KB | MB | GB');
// Ausgabe: 370 GB

Warum also kompliziert, wenn es auch einfach geht ;-)

Kommentare deaktiviert

Bitnami.org – openSource Applikationen in 5 Minuten installiert

Unter http://www.bitnami.org/ findet man diverse openSource Programme als Installer für Linux, Mac und Windows.

Das interessante daran ist, dass durch den Installer gleich alle abhängigen Anwendungen mit installiert werden und unabhängig von bereits vorhanden laufen. Getestet habe ich einmal den LAMPStack sowie den DrupalStack. Beide liesen sich wie beschrieben in weniger als 5 Minuten installieren und waren danach sofort einsatzbereit.

Ein grafischer Installer führt einen Schritt für Schritt zum Erfolg. Aber auch an die Console wurde gedacht. Mit dem Parameter “–mode text” kann auf die grafische Oberfläsche verzichtet werden und eine Installation in der Shell beginnt.

Das Angebot an Stacks ist bereits jetzt überwältigend, und es sollen noch viele folgen. Leider ist TYPO3 noch nicht in Planung, vielleicht kommt das ja auch bald. Wer lokal auf seinem Rechner mal eine Anwendung testen will oder eine lokale Entwicklungsumgebung braucht ist damit wunderbar bedient.

Mit ein wenig Scripterei lassen sich so vielleicht auch automatische Installationen von Anwendungen auf einem Webserver realisieren, dem werde ich noch mal weiter nachgehen.

Comments (1)

  

t3n Magazin - Jetzt im Abo bestellen