Start · Sprachen · PHP · Referenz · spl_autoload_extensions

spl_autoload_extensions

Funktion

Legt die Dateiendungen fest, die <code>spl_autoload()</code> beim automatischen Laden von Klassen sucht, und gibt die aktuell registrierten Endungen zurück.

seit PHP 5.1.2 Kategorie: oop

Signatur

spl_autoload_extensions(?string $file_extensions = null): string

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

Typ
string
Beschreibung
Gibt die aktuell registrierte, kommagetrennte Liste der Dateiendungen zurück — entweder die neu gesetzte oder die zuvor gültige Liste.

Beispiele

Aktuelle Dateiendungen abfragen

<?php
// Aktuelle Endungen ohne Änderung abfragen
$extensions = spl_autoload_extensions();
echo $extensions;
// Ausgabe (Standard): .php,.inc
.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();
Neue Endungen: .php,.inc,.php5

// 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.