Start · Sprachen · PHP · Referenz · get_defined_functions

get_defined_functions

Funktion

Gibt ein assoziatives Array aller aktuell definierten Funktionen zurück, aufgeteilt in interne (<code>internal</code>) und benutzerdefinierte (<code>user</code>) Funktionen.

seit PHP 4.0.4 Kategorie: oop

Signatur

get_defined_functions(bool $exclude_disabled = true): array

Beschreibung

get_defined_functions() liefert ein zweidimensionales assoziatives Array mit zwei Schlüsseln: internal enthält alle eingebauten PHP-Funktionen (also Funktionen aus dem PHP-Kern und geladenen Extensions), während user alle im aktuellen Skript oder eingebundenen Dateien selbst definierten Funktionen enthält.

Die Funktion ist besonders nützlich bei der Entwicklung von Debugging-Werkzeugen, Dependency-Analysetools oder beim Introspektieren einer Laufzeitumgebung. Sie erlaubt es, zur Laufzeit zu prüfen, welche Funktionen verfügbar sind – etwa um zu erkennen, ob eine bestimmte Extension geladen wurde oder ob ein Autoloader bereits bestimmte Funktionen registriert hat.

Alle Funktionsnamen werden in Kleinschreibung zurückgegeben, unabhängig davon, wie sie deklariert wurden. Dies entspricht dem PHP-Verhalten, dass Funktionsaufrufe case-insensitiv sind (ab PHP 8 ist dies allerdings offiziell deprecated für benutzerdefinierte Funktionen).

Mit dem Parameter $exclude_disabled (seit PHP 7.0.15 / 7.1.1) lässt sich steuern, ob durch disable_functions in der php.ini deaktivierte Funktionen aus der Liste ausgeschlossen werden sollen. Standardmäßig werden deaktivierte Funktionen ausgeschlossen.

Parameter

Name Typ Default Beschreibung
$exclude_disabled bool true Wenn true (Standard), werden Funktionen, die per disable_functions-Direktive in der php.ini deaktiviert wurden, nicht in der Ergebnisliste aufgeführt. Bei false werden auch deaktivierte Funktionen im Array internal mitgeliefert.

Rückgabewert

Typ
array
Beschreibung
Ein assoziatives Array mit den Schlüsseln internal (Array der eingebauten PHP-Funktionen) und user (Array der benutzerdefinierten Funktionen). Alle Funktionsnamen sind Strings in Kleinschreibung.

Beispiele

Übersicht aller definierten Funktionen ausgeben

<?php
function meineFunktion(): void {}
function nochEineFunktion(int $x): int { return $x * 2; }

$funktionen = get_defined_functions();

echo 'Anzahl interner Funktionen: ' . count($funktionen['internal']) . PHP_EOL;
echo 'Anzahl benutzerdefinierter Funktionen: ' . count($funktionen['user']) . PHP_EOL;

// Benutzerdefinierte Funktionen ausgeben
echo 'Benutzerdefinierte Funktionen:' . PHP_EOL;
foreach ($funktionen['user'] as $name) {
    echo '  - ' . $name . PHP_EOL;
}
Anzahl interner Funktionen: 1234 Anzahl benutzerdefinierter Funktionen: 2 Benutzerdefinierte Funktionen: - meinefunktion - nocheinefunktion

Prüfen, ob eine bestimmte Extension-Funktion verfügbar ist

<?php
$funktionen = get_defined_functions();

// Prüfen, ob curl_init verfügbar ist
$gesuchte = 'curl_init';
if (in_array($gesuchte, $funktionen['internal'], true)) {
    echo "Die Funktion '{$gesuchte}' ist verfügbar." . PHP_EOL;
} else {
    echo "Die Funktion '{$gesuchte}' ist NICHT verfügbar. Bitte die cURL-Extension aktivieren." . PHP_EOL;
}

// Alternativ: Alle verfügbaren Funktionen nach einem Muster filtern
$curlFunktionen = array_filter(
    $funktionen['internal'],
    fn(string $name): bool => str_starts_with($name, 'curl_')
);
echo 'Verfügbare cURL-Funktionen: ' . implode(', ', $curlFunktionen) . PHP_EOL;
Die Funktion 'curl_init' ist verfügbar. Verfügbare cURL-Funktionen: curl_init, curl_setopt, curl_exec, ...

Deaktivierte Funktionen sichtbar machen

<?php
// Alle internen Funktionen, inkl. deaktivierter (exclude_disabled = false)
$alleFunktionen = get_defined_functions(false);

// Nur die aktiven (exclude_disabled = true, Standard)
$aktiveFunktionen = get_defined_functions(true);

$deaktiviert = array_diff(
    $alleFunktionen['internal'],
    $aktiveFunktionen['internal']
);

if (empty($deaktiviert)) {
    echo 'Keine Funktionen sind deaktiviert.' . PHP_EOL;
} else {
    echo 'Deaktivierte Funktionen: ' . implode(', ', $deaktiviert) . PHP_EOL;
}
Keine Funktionen sind deaktiviert.

// Wichtig · Fallstricke

Achtung bei Performance: Da get_defined_functions() tausende interne Funktionen liefern kann, sollte die Funktion nicht in performance-kritischen Schleifen aufgerufen werden. Für einfache Prüfungen, ob eine einzelne Funktion existiert, ist function_exists() deutlich effizienter.

Namensraum-Einschränkung: Funktionen, die in einem PHP-Namensraum (namespace) definiert sind, erscheinen in der user-Liste mit ihrem vollqualifizierten Namen (z. B. mein\namensraum\meinefunktion). Anonyme Funktionen (Closures) und Arrow Functions werden nicht in der Liste aufgeführt.

Methoden ausgeschlossen: Die Funktion gibt keine Klassenmethoden zurück – nur frei definierte (globale oder namespaced) Funktionen. Für Methoden sind get_class_methods() oder die Reflection-API (ReflectionClass) zu verwenden.