Start · Sprachen · PHP · Referenz · spl_classes

spl_classes

Funktion

Gibt ein assoziatives Array aller verfügbaren SPL-Klassen zurück, wobei Schlüssel und Wert jeweils der Klassenname sind.

seit PHP 5.0.0 Kategorie: oop

Signatur

spl_classes(): array

Beschreibung

spl_classes() liefert ein assoziatives Array mit allen Klassen, die von der Standard PHP Library (SPL) bereitgestellt werden. Schlüssel und Wert sind dabei identisch und enthalten den jeweiligen Klassennamen als String.

Die Funktion eignet sich besonders gut zur Inspektion und Diagnose, um festzustellen, welche SPL-Klassen in der aktuellen PHP-Installation verfügbar sind. Das ist nützlich bei der Entwicklung plattformübergreifender Bibliotheken oder beim Debuggen von Umgebungsunterschieden.

Typische SPL-Klassen, die zurückgegeben werden, sind unter anderem ArrayObject, SplStack, SplQueue, SplMinHeap, SplDoublyLinkedList, DirectoryIterator und viele weitere Datenstrukturen sowie Iteratoren.

Da SPL seit PHP 5 ein fester Bestandteil von PHP ist und nicht mehr deaktiviert werden kann (ab PHP 5.3.0), ist das Ergebnis in modernen PHP-Versionen stets vollständig vorhanden. Der praktische Nutzen liegt daher heute vor allem in Dokumentation, Debugging und dynamischer Reflexion.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array zurück, in dem sowohl Schlüssel als auch Wert jeweils den Namen einer verfügbaren SPL-Klasse enthalten. Das Array ist alphabetisch sortiert.

Beispiele

Alle verfügbaren SPL-Klassen ausgeben

<?php
$splClasses = spl_classes();

foreach ($splClasses as $className) {
    echo $className . PHP_EOL;
}
AppendIterator ArrayIterator ArrayObject BadFunctionCallException BadMethodCallException ... (weitere SPL-Klassen)

Prüfen, ob eine bestimmte SPL-Klasse verfügbar ist

<?php
$splClasses = spl_classes();

$classToCheck = 'SplMinHeap';

if (isset($splClasses[$classToCheck])) {
    echo "Die Klasse '{$classToCheck}' ist verfügbar." . PHP_EOL;
    $heap = new SplMinHeap();
    $heap->insert(5);
    $heap->insert(1);
    $heap->insert(3);
    echo "Kleinstes Element: " . $heap->top() . PHP_EOL;
} else {
    echo "Die Klasse '{$classToCheck}' ist NICHT verfügbar." . PHP_EOL;
}
Die Klasse 'SplMinHeap' ist verfügbar. Kleinstes Element: 1

Anzahl der verfügbaren SPL-Klassen ermitteln

<?php
$splClasses = spl_classes();

echo 'Anzahl verfügbarer SPL-Klassen: ' . count($splClasses) . PHP_EOL;

// Nur Klassen anzeigen, die mit 'Spl' beginnen
$filteredClasses = array_filter($splClasses, function (string $name): bool {
    return str_starts_with($name, 'Spl');
});

echo 'Davon Klassen mit Präfix "Spl": ' . count($filteredClasses) . PHP_EOL;
print_r($filteredClasses);
Anzahl verfügbarer SPL-Klassen: 56 Davon Klassen mit Präfix "Spl": 20 Array ( [SplDoublyLinkedList] => SplDoublyLinkedList [SplFixedArray] => SplFixedArray [SplHeap] => SplHeap ... (weitere Spl-Klassen) )

// Wichtig · Fallstricke

Ab PHP 5.3.0 ist die SPL-Erweiterung fest in PHP integriert und kann nicht mehr deaktiviert werden. In älteren PHP-Versionen (5.0–5.2) war es möglich, SPL beim Kompilieren auszulassen, weshalb spl_classes() damals ein leeres Array zurückgeben konnte.

Da Schlüssel und Wert im zurückgegebenen Array identisch sind, kann sowohl isset($classes['KlassenName']) als auch in_array('KlassenName', $classes) zur Überprüfung verwendet werden – ersteres ist jedoch deutlich effizienter.

Für die allgemeine Prüfung, ob eine Klasse (auch außerhalb von SPL) existiert, empfiehlt sich stattdessen class_exists().