
Druckansicht von http://www.php-homepage.de/manual/language.oop5.autoload.php
AutoloadingViele Entwickler, die objektorientierte Anwendungen entwickeln, erzeugen eine eigene PHP Quelldatei für jede Klassendefinition. Eines der größten Ärgernisse ist die Notwendigkeit, eine lange Liste von benötigten Include-Anweisungen am Anfang eines jeden Skripts (eine für jede Klasse). In PHP 5 ist das nicht länger notwendig. Man kann eine __autoload() Funktion definieren, die automatisch aufgerufen wird, falls man versucht eine noch nicht definierte Klasse oder ein nicht definiertes Interface zu benutzen. Durch den Aufruf dieser Funktion erhält die Scripting Engine einen letzten Versuch, die Klasse zu laden, bevor PHP unter Ausgabe einer Fehlermeldung scheitert. Tipp
spl_autoload_register() bietet eine flexiblere Alternative zum automatischen Laden von Klassen an. Aus diesem Grund wird von der Verwendung von __autoload() abgeraten und diese Funktion könnte zukünftig als veraltet gekennzeichnet oder gar entfernt werden.
Beispiel #1 Autoload Beispiel Dieses Beispiel versucht die Klassen MyClass1 und MyClass2 aus den entsprechenden Dateien MyClass1.php und MyClass2.php zu laden.
<?phpBeispiel #2 Weiteres Autoload Beispiel Dieses Beispiel versucht das Interface ITest zu laden.
<?phpBeispiel #3 Autoloading mit Ausnahmebehandlung für 5.3.0+ In diesem Beispiel wird eine Exception geworfen und ein try/catch-Block demonstriert.
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Möchte NonLoadableClass laden. Kann NonLoadableClass nicht laden. Beispiel #4 Autoloading mit Ausnahmebehandlung für 5.3.0+ mit fehlender eigener Exception In diesem Beispiel wird eine Exception geworfen für eine nicht ladbare eigene Exception.
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: Möchte NonLoadableClass laden. Möchte MissingException laden. Fatal error: Class 'MissingException' not found in testMissingException.php on line 4 |