class tslib_pibase - Basisklasse aller Frontenderweiterungen

Bei der Programmierung mit Frontenderweiterungen greift man nach Möglichkeit auf die Methoden der Klasse tslib_pibase zurück, da die eigene Extension eine Erweiterung der selbigen darstellt.

Dennoch findet man viel Unverständnis oder Halbweisheiten über diese Klasse, deswegen und als "Spickzettel" führe ich meine Erfahrungen damit auf.

Grundlagen der Namensgebung

Frontenderweiterungen werden am schnellsten und sichersten mit dem Kickstarter angelegt. Dabei wird eine Hauptklasse für jedes Frontendmodul angelegt:

class tx_[EXTENSIONKEY]_pi[MODULNUMMER] extends tslib_pibase { ...

Die Fragmente der Klassennamen haben folgende Bedeutung:

  • tx kennzeichnet benutzerspezifische Erweiterungen. Darüber hinaus gibt es die Präfix sys, static, tt, etc., die speziellen Zwecken vorbehalten sind.
  • [EXTENSIONKEY] legen Sie im Kickstarter zu Beginn fest. Der Extensionkey wird immer mit kleinen Buchstaben geschrieben. Sofern dieser Key nur lokal verwendet wird, kann er frei gewählt werden. Um Kompatibilitätsprobleme mit benötigten Erweiterungen durch Namensgebung zu vermeiden ist der einzige Anspruch, daß er einzigartig ist und bei frei verfügbaren Extensions noch nicht vergeben wurde.
    Als weiteren Anspruch für Programmierung und Darstellung von URLs kann man häufig auf die Zielsetzung treffen, daß er möglichst kurz sein sollte.
    Wichtig ist, daß der Extension-Key für die Klassenbezeichnung und für $prefixId in bereinigter Form verwendet wird, das heißt, daß Unterstriche - sofern vorhanden - rausgefiltert werden und nach Möglichkeit auch nicht verwendet werden sollten.
  • pi Kennzeichnet Frontendmodule im Gegensatz zu Backendmodulen, welche mit mod[MODULNUMMER] bezeichnet werden. Frontendmodule werden immer in einem Ordner "pi[MODULNUMMER]" angelegt, somit hat man auch eine Ordnerstruktur, die zumindest den groben Funktionsbereich wiederspiegelt.
  • [MODULNUMMER] ist häufig 1, da viele Erweiterungen nur ein Modul beinhalten. Ansonsten wird in der Reihenfolge wie sie angelegt werden einfach hochgezählt. Somit kann man ggf. Module pi1-pi5 antreffen.


Innerhalb der Erweiterung kann man zwar beliebige Variablen definieren, allerdings empfiehlt sich, alle Variablen, die zur Unterscheidung der Erweiterung beitragen mit $this->prefixId."[VARIABLENBEZEICHNUNG]" zu beginnen.
Dies ist relevant, wenn Parameter per Formularen, über Links, Sessions, etc. übergeben werden. Ansonsten kann es zu Fehlern kommen, wenn zwei verschiedene Frontenderweiterungen auf der gleichen Seite auf verschiedene Objekte gleichen Namens zugreifen wollen.
Bei JavaScripts ist das leider häufiger der Fall, da die Namenskonvention hier leider oft nicht eingehalten wird - insbesondere auch dadurch, daß komplette JavaScript-Bibliotheken einfach eingebunden werden (z.B. Mootols).

 

piVars

this->piVars stellt einen Array aus den Variablen dar, die durch alle Get- und Post-Variablen zur Erweiterung an die Seite übertragen werden.
Dabei kann die Klasse durch die Variablen-Präfix $this->prefixId bei der Zuordnung erkennen, welche Erweiterung jeweils durch möglicherweise mehrere Parameter angesprochen wird.

$this->prefixId wird am Beginn jeden Frontendmoduls festgelegt und hat den gleichen Namen wie die Klasse. Die Details dazu sind im vorhergehenden Abschnitt erklärt. Somit sieht eine URL mit Parametern einer fiktiven Klasse mit dem Extension-Key "foo" folgendermaßen aus:

index.php?tx_foo_pi1[parameter1]=wert1&tx_foo_pi1[parameter1]=wert2