Signatur
Beschreibung
get_extension_funcs() liefert eine Liste aller Funktionsnamen, die eine bestimmte PHP-Erweiterung (Extension) exportiert. Der Erweiterungsname wird ohne Dateiendung und ohne Pfadangabe übergeben – also z. B. "json" statt "json.so".
Die Funktion ist besonders nützlich zur Laufzeit-Inspektion, etwa um zu prüfen, welche Funktionen einer geladenen Extension verfügbar sind, oder um eigene Hilfs-Routinen und Debugger zu erstellen, die Auskunft über die PHP-Umgebung geben. In Kombination mit extension_loaded() lässt sich so sehr gezielt auf das Vorhandensein einzelner Fähigkeiten prüfen.
Ist die angegebene Extension nicht geladen, gibt die Funktion false zurück. Bei Erweiterungen, die zwar geladen sind, aber keine Funktionen exportieren (z. B. reine Zend-Extensions), kann das Ergebnis ein leeres Array sein.
Die zurückgegebenen Funktionsnamen sind in Kleinbuchstaben angegeben, da PHP-Funktionsnamen case-insensitiv sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $extension Pflicht | string | Der Name der PHP-Erweiterung in Kleinbuchstaben (z. B. "json", "mbstring", "curl"). Die Groß-/Kleinschreibung spielt keine Rolle, Dateiendungen wie .so oder .dll werden nicht angegeben. |
Rückgabewert
false, wenn die Erweiterung nicht geladen ist.Beispiele
Alle Funktionen der JSON-Extension ausgeben
<?php
if (extension_loaded('json')) {
$funcs = get_extension_funcs('json');
echo "JSON-Funktionen:" . PHP_EOL;
foreach ($funcs as $func) {
echo ' - ' . $func . PHP_EOL;
}
} else {
echo "Die JSON-Extension ist nicht geladen." . PHP_EOL;
}
Prüfen ob eine bestimmte Funktion in einer Extension vorhanden ist
<?php
function extension_has_function(string $extension, string $funcName): bool {
$funcs = get_extension_funcs($extension);
if ($funcs === false) {
return false;
}
return in_array(strtolower($funcName), $funcs, true);
}
if (extension_has_function('mbstring', 'mb_strlen')) {
echo "mb_strlen ist verfügbar." . PHP_EOL;
} else {
echo "mb_strlen ist NICHT verfügbar." . PHP_EOL;
}
Übersicht aller geladenen Extensions mit Anzahl ihrer Funktionen
<?php
$extensions = get_loaded_extensions();
foreach ($extensions as $ext) {
$funcs = get_extension_funcs($ext);
$count = is_array($funcs) ? count($funcs) : 0;
printf("%-20s %d Funktion(en)\n", $ext, $count);
}
// Wichtig · Fallstricke
Der Erweiterungsname ist case-insensitiv, jedoch ist es gute Praxis, ihn in Kleinbuchstaben zu übergeben, da er intern so verwaltet wird. Ein Fehler in der Schreibweise führt zu einem Rückgabewert von false, was leicht mit einer nicht geladenen Extension verwechselt werden kann – ggf. vorher extension_loaded() prüfen.
Einige Erweiterungen liefern Klassen, Konstanten oder Interfaces, aber keine direkten Funktionen. In diesem Fall gibt get_extension_funcs() ein leeres Array zurück, obwohl die Extension aktiv ist. Für Klassen gibt es die Funktion get_declared_classes().