Die JLoader-Klasse implementiert eine Besonderheit, welche in PHP 5 zum Standard gehört: Das dynamische Laden von Klassen. Bis zu dieser Version erfolgte das Laden von Klassen „vorsorglich“ am Anfang eines Skripts mit dem Befehl require_once(). Ab jetzt können die Befehle genau dort eingebaut werden, wo sie von der Anwendung benötigt werden. Dadurch erhalten wir eine schlankere Software im Arbeitsspeicher, da nur die Klassen geladen werden, welche für den Programmablauf benötigt werden.
Die Klasse JLoader
Für diese Möglichkeit stellt uns PHP 5 die „Spezialfunktion“ __autoload() zur Verfügung. Diese darf zwar nur genau einmal in einem PHP-Skript vorkommen, übernimmt aber dafür das dynamische Nachladen von Klassen. Dies bringt uns einen immensen Vorteil im Bereich der Performance.
Mit der alten Methode wurden alle Klassen am Anfang des Skripts geladen. Egal ob diese Klassen jemals aufgerufen wurden, die Lade- und Verarbeitungszeit wurde verbraucht. Mit der neuen Funktion wird diese Zeit erst verbraucht, wenn die Klasse wirklich in der Applikation benötigt wird.
Im obigen Listing sehen wir, dass die Klasse classUser einfach aufgerufen wird. In unserem Fall wurde die entsprechende Definition noch nicht geladen. Daher greift der PHP-Interpreter auf die Funktion __autoload() zu und übergibt als Parameter den Namen der Klasse (classUser). Nun wird im Befehl require_once der Pfad zur Datei zusammengestellt (/classes/classUser.class.php) und diese in der Folge geladen. Dadurch wird auch die Variable $benutzer ohne Fehler belegt.
Da diese Funktion aber erst ab der Version 5 von PHP zur Verfügung steht und Joomla auch zu älteren Versionen abwärtskompatibel sein muss bzw. bereits unter Version 4 von PHP verfügbar war, wird eine vergleichbare Funktionalität benötigt. Dafür ist die Klasse JLoader zuständig, welche genau diese Arbeit übernimmt. Diese Klasse stellt uns einen einfachen Befehl zur Verfügung, welchen wir für den dynamischen Import nutzen sollten.
Der Befehl, den uns Joomla dafür zur Verfügung stellt, ist jimport($path). Der Parameter $path ist hierbei allerdings ein wenig gewöhnungsbedürftig. Hier wird nicht ein echter Pfad angegeben, sondern Joomla nimmt den Pfad joomla/ als Basis an. In dem Parameter selbst werden die einzelnen Ordner und der Dateiname mit Punkten getrennt und die Erweiterung .php wird nicht angegeben. Schauen wir uns dazu ein Beispiel an:
...
jimport('joomla.application.component.controller');
...
Der obenstehende Befehl importiert die Datei controller.php aus dem Verzeichnis libraries/joomla/application/component/.
Ganzen Artikel lesen...
Die Klasse JError
Die JError-Klasse ist in der gesamten Applikation als globales Objekt verfügbar. Sie ist zuständig für die gesamte Fehlerbehandlung in Joomla.
Methoden:
$fehler = [mixed] JError::&getError()
Übergibt eine Referenz auf das letzte Fehler-Objekt oder gibt
false aus, falls kein Fehler ausgelöst wurde.
$arrFehler = [array] JError::&getErrors()
Übergibt eine Referenz auf ein Objektarray, welches die Fehler seit Skriptausführung in chronologischer Reihenfolge enthält.
$errObj = [object] raiseError([string] $code, [string] $msg, [mixed] $info)
Erzeugt ein neues Fehlerobjekt des Typs E_ERROR auf Basis der Klasse JException. Der interne Fehlercode für die Applikation wird in $code übergeben. Die Fehlermeldung, welche auch für den Benutzer sichtbar ist, wird in $msg abgelegt. Und zusätzliche Informationen für den Entwickler – diese werden dem Benutzer nicht angezeigt – sind in $info enthalten. Ein Fehler dieses Typs ruft eine spezielle Seite in Joomla auf und verhindert das Weiterarbeiten mit dem System.
$errObj = [object] raiseWarning([string] $code, [string] $msg, [mixed] $info)
Erzeugt ein neues Fehlerobjekt des Typs
E_WARNING auf Basis der Klasse
JException. Die Parameter sind gleich wie bei der vorherigen Methode. Dieser Typ verhindert das Weiterarbeiten mit der speziellen Anwendung und gibt eine Nachricht innerhalb des Systems an den Benutzer aus.
$errObj = [object] raiseNotice([string] $code, [string] $msg, [mixed] $info)
Erzeugt ein neues Fehlerobjekt des Typs
E_NOTICE auf Basis der Klasse
JException. Die Parameter sind gleich wie bei der vorherigen Methode. Dieser Typ gibt dem Benutzer einen Hinweis, eine spezielle Aktion durchzuführen oder dass eine Aktion durchgeführt wurde (beziehungsweise nicht).
Die JRoute und JRouter-Klasse
Gerade im World Wide Web ist die Darstellung von Websites und auch der URLs ein sehr wichtiges, wenn nicht zentrales Thema. Gerade Suchmaschinen reagieren sensibel auf URLs, welche nicht „sprechend“ sind. Damit ist gemeint, dass beispielsweise eine URL wie http://www.guru.20-info/index.php?p=27&id=5 von einer Suchmaschine nicht so gut bewertet wird wie die URL http://www.guru-20.info/cms/joomla-in-der-tiefe.
Gerade die Darstellung mit sprechenden URL kann auf verschiedene Arten realisiert werden. Oft wird dafür ein Modul des Webservers selbst eingesetzt. Um aber wieder mit allen technischen Grundlagen kompatibel zu sein, bietet uns Joomla eine eigene Implementierung mit der Klasse JRoute an. Mit der Methode JRoute::_() können wir die URL „sprechen“ lassen. Diese Methode nutzt im Hintergrund die passende, von der jeweiligen Anwendung bereitgestellte Instanz von JRouter.

Dieser Text ist dem Buch “Joomla!-Extensions mit PHP entwickeln” von Clemens Gull entnommen, das im Franzis-Verlag erschienen ist. Es ist
hier direkt bestellbar.

Clemens Gull
Lernen Sie die ganze Vielfalt vom Franzis Buch- und Softwareverlag kennen