Automatisches Laden von Klassen

Viele Entwickler, die objektorientierte Anwendungen entwickeln, erzeugen für jede Klassendefinition eine eigene PHP-Quelldatei. Eines der größten Ärgernisse ist die Notwendigkeit, am Anfang eines jeden Skripts eine lange Liste von benötigten Include-Anweisungen (eine für jede Klasse) schreiben zu müssen.

Die Funktion spl_autoload_register() registriert eine beliebige Anzahl von Autoladern, die es ermöglichen, dass Klassen und Schnittstellen automatisch geladen werden, wenn sie derzeit nicht definiert sind. Durch das Registrieren von Autoladern erhält PHP einen letzten Versuch, die Klasse oder Schnittstelle zu laden, bevor es unter Ausgabe einer Fehlermeldung scheitert.

Jedes klassenähnliche Konstrukt kann auf die gleiche Weise automatisch geladen werden. Dazu gehören Klassen, Schnittstellen, Traits und Aufzählungen.

Achtung

Vor PHP 8.0.0 war es möglich, __autoload() zu verwenden, um Klassen und Schnittstellen automatisch zu laden. Dies ist jedoch eine weniger flexible Alternative zu spl_autoload_register(). __autoload() ist seit PHP 7.2.0 veraltet und wurde in PHP 8.0.0 entfernt.

Hinweis:

Die Funktion spl_autoload_register() kann mehrfach aufgerufen werden, um mehrere Autoloader zu registrieren. Wenn von einer Autoload-Funktion eine Exception ausgelöst wird, wird dieser Vorgang jedoch unterbrochen und es werden keine weiteren Autoload-Funktionen ausgeführt. Aus diesem Grund wird dringend davon abgeraten, von einer Autoload-Funktion aus eine Exception auszulösen.

Beispiel #1 Autoload-Beispiel

Dieses Beispiel versucht die Klassen MyClass1 und MyClass2 aus den entsprechenden Dateien MyClass1.php und MyClass2.php zu laden.

<?php
spl_autoload_register
(function ($class_name) {
    include 
$class_name '.php';
});

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Beispiel #2 Weiteres Autoload-Beispiel

Dieses Beispiel versucht, das Interface ITest zu laden.

<?php

spl_autoload_register
(function ($name) {
    
var_dump($name);
});

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Was genau bedeutet "Vibe Coding"? Ein tiefgehender Blick für Entwickler

In der Welt der Softwareentwicklung gibt es unzählige Wege, wie man an ein Projekt herangeht. Manche schwören auf strikte Planung, andere auf bewährte Algorithmen und wieder andere lassen sich von etwas ganz anderem leiten: ihrem Gefühl. ...

admin

Autor : admin
Kategorie: Software & Web-Development

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

NEW88 – Nền Tảng Cá Cược Trực Tuyến Hàng Đầu Trong Thời Đại Số

NEW88 – Nền Tảng Cá Cược Trực Tuyến Hàng Đầu Trong Thời Đại Số Trong thời đại công nghệ số phát triển mạ ...

Geschrieben von new88betus am 30.03.2026 09:52:31
Forum: PHP Developer Forum
Fehler bei Beziehung

Man braucht dafür wirklich Erfahrung und ein gutes Verständnis der Quellcodeentwicklung. Updates und der Austausch von Wissen machen das Lernen ...

Geschrieben von boughtquota am 30.03.2026 08:39:28
Forum: PHP Developer Forum
PHP session expires too early when using fetch requests

The issue of session expiration piqued my interest, particularly in terms of how fetch requests may effect it. Could there be a correlation betwee ...

Geschrieben von bonuswrestler am 30.03.2026 06:58:55
Forum: PHP Developer Forum
PHP-Performance bei vielen externen Requests

Würde vor allem 3 Dinge machen: Parallel Requests (curl_multi oder Guzzle async) statt nacheinander Caching (Redis/Memcached, auch kurze TTL h ...

Geschrieben von hanmira31 am 30.03.2026 05:15:36
Forum: PHP Developer Forum