Signatur
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
Beispiele
Alle verfügbaren SPL-Klassen ausgeben
<?php
$splClasses = spl_classes();
foreach ($splClasses as $className) {
echo $className . PHP_EOL;
}
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;
}
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);
// 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().