Signatur
Beschreibung
spl_autoload_extensions() steuert, welche Dateiendungen die eingebaute SPL-Autoload-Funktion spl_autoload() beim Suchen nach Klassendateien berücksichtigt. Standardmäßig sucht spl_autoload() nach .php und .inc. Mit dieser Funktion lässt sich diese Liste anpassen.
Die Endungen werden als kommagetrennte Zeichenkette übergeben, z. B. '.php,.php5,.class.php'. Wird null oder gar kein Argument übergeben, gibt die Funktion lediglich die aktuell gültige Liste zurück, ohne sie zu verändern.
Diese Funktion ist primär dann sinnvoll, wenn spl_autoload() direkt (ohne eigene Autoloader-Callback-Funktion) als Autoloader genutzt wird. In modernen Projekten, die mit spl_autoload_register() eigene Callbacks definieren, spielt sie eine untergeordnete Rolle, da der eigene Callback die Ladelogik vollständig übernimmt.
Achtung: Das Setzen der Endungen gilt global für den gesamten Prozess. Mehrere Bibliotheken, die diese Funktion unterschiedlich setzen, können sich gegenseitig beeinflussen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $file_extensions | string|null | null | Kommagetrennte Liste der Dateiendungen, z. B. '.php,.class.php'. Wird null übergeben oder das Argument weggelassen, bleibt die aktuelle Liste unverändert und wird nur zurückgegeben. |
Rückgabewert
Beispiele
Aktuelle Dateiendungen abfragen
<?php
// Aktuelle Endungen ohne Änderung abfragen
$extensions = spl_autoload_extensions();
echo $extensions;
// Ausgabe (Standard): .php,.inc
Eigene Dateiendungen für spl_autoload setzen
<?php
// Nur .php und .class.php erlauben
spl_autoload_extensions('.php,.class.php');
// spl_autoload als Autoloader registrieren
spl_autoload_register();
// Wenn jetzt eine Klasse 'MyClass' benötigt wird,
// sucht spl_autoload() nach 'MyClass.php' und 'MyClass.class.php'
// im include_path.
new MyClass(); // sucht MyClass.php oder MyClass.class.php
Endungen für Legacy-Projekte mit .inc-Dateien
<?php
// Endungen explizit setzen, um auch .inc-Dateien zu laden
$alt = spl_autoload_extensions('.php,.inc,.php5');
echo "Neue Endungen: $alt\n";
// Ab jetzt sucht spl_autoload() nach allen drei Endungen
spl_autoload_register();
// Klasse 'LegacyHelper' könnte in LegacyHelper.inc liegen
new LegacyHelper();
// Wichtig · Fallstricke
Globale Auswirkung: Die gesetzten Endungen gelten prozessweit. Wenn mehrere Komponenten oder Bibliotheken diese Funktion aufrufen, kann es zu unerwarteten Überschreibungen kommen. In modernen Projekten sollte daher bevorzugt spl_autoload_register() mit einem eigenen Callback (z. B. über Composer) verwendet werden.
Kompatibilität: Ab PHP 8.0 wurde der Parameter von string auf ?string erweitert, sodass null explizit übergeben werden kann, um die Liste nur abzufragen.