__autoload

Die Funktion __autoload($className) wird außerhalb einer Klasse (im globalen Sichtbarkeitsbereich) deklariert. Der PHP-Interpreter ruft diese Funktion automatisch auf, wenn ein Objekt einer nicht deklarierten Klasse erzeugt werden soll. Der Name der Klasse wird hierbei als Parameter an die Funktion übergeben. In der Funktion __autoload() kann so an zentraler Stelle ein Mechanismus implementiert werden, der die entsprechende Quelltextdatei für eine Klasse lädt.

In Projekten mit einer komplexen Klassenhierarchie hilft ein solcher Mechanismus das Problem zu verhindern, dass nur die für die aktuelle Ausführung benötigten Klassen geladen werden und nicht sämtliche Klassen der Anwendung. Ohne einen solchen Mechanismus, der selektiv die benötigten Quelltextdateien lädt, wäre in einem solchen Fall der Aufwand für das Laden und Kompilieren aller Klassen größer als der Aufwand für die eigentliche Ausführung der Methoden der tatsächlich benötigten Klassen.

Beispiel 2.1 zeigt eine Implementierung der Funktion __autoload(), die über ein assoziatives Array die Auflösung von Klassennamen zu entsprechender Quelltextdatei vornimmt, und diese dann lädt.

Beispiel 2.1: Verwendung der __autoload-Funktion

<?php
$GLOBALS['klassen'] = array(
  'Projekt_Klasse' => 'Projekt/Klasse.php'
);
 
function __autoload($klasse) {
  if (isset($GLOBALS['klassen'][$klasse])) {
    require_once $GLOBALS['klassen'][$klasse];
  }
}
 
$objekt = new Projekt_Klasse;
?>