Start · Sprachen · PHP · Referenz · ReflectionExtension

ReflectionExtension

Klasse

Liefert detaillierte Informationen über eine geladene PHP-Erweiterung (Extension), wie Funktionen, Klassen, Konstanten und INI-Einstellungen.

seit PHP 5.1.0 Kategorie: oop

Signatur

class ReflectionExtension implements Reflector

Beschreibung

ReflectionExtension ist Teil der PHP-Reflection-API und ermöglicht es, zur Laufzeit Metadaten über eine installierte und geladene PHP-Erweiterung abzufragen. Mit ihr lassen sich z. B. alle von einer Extension bereitgestellten Funktionen, Klassen, Konstanten und INI-Einträge introspektieren.

Typische Einsatzgebiete sind Debugging-Tools, Dokumentationsgeneratoren, Plugin-Systeme und Kompatibilitätsprüfungen, bei denen sichergestellt werden muss, dass bestimmte Erweiterungen mit den erwarteten Funktionen und Klassen verfügbar sind.

Ein ReflectionExtension-Objekt wird durch Übergabe des Erweiterungsnamens (z. B. 'json', 'mbstring') erzeugt. Ist die Erweiterung nicht geladen, wird eine ReflectionException geworfen.

Die Klasse ergänzt extension_loaded() und get_extension_funcs() mit einem objektorientierten Interface und bietet deutlich mehr Informationen als diese einfachen Funktionen.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Der Name der zu untersuchenden PHP-Erweiterung, z. B. 'json' oder 'PDO'. Groß-/Kleinschreibung wird ignoriert.

Rückgabewert

Typ

Beispiele

Grundlegende Informationen über die JSON-Erweiterung

<?php
$ext = new ReflectionExtension('json');

echo 'Name:    ' . $ext->getName() . PHP_EOL;
echo 'Version: ' . $ext->getVersion() . PHP_EOL;

echo PHP_EOL . 'Funktionen:' . PHP_EOL;
foreach (array_keys($ext->getFunctions()) as $funcName) {
    echo '  ' . $funcName . PHP_EOL;
}

echo PHP_EOL . 'Konstanten:' . PHP_EOL;
foreach (array_keys($ext->getConstants()) as $constName) {
    echo '  ' . $constName . PHP_EOL;
}
Name: json Version: 1.7.0 Funktionen: json_encode json_decode json_last_error json_last_error_msg Konstanten: JSON_HEX_TAG JSON_HEX_AMP ...

Verfügbare Klassen und INI-Einstellungen einer Erweiterung prüfen

<?php
try {
    $ext = new ReflectionExtension('pdo');

    echo 'Klassen in PDO:' . PHP_EOL;
    foreach ($ext->getClassNames() as $className) {
        echo '  ' . $className . PHP_EOL;
    }

    echo PHP_EOL . 'INI-Einstellungen:' . PHP_EOL;
    foreach ($ext->getINIEntries() as $key => $value) {
        echo '  ' . $key . ' = ' . var_export($value, true) . PHP_EOL;
    }
} catch (ReflectionException $e) {
    echo 'Erweiterung nicht verfügbar: ' . $e->getMessage();
}
Klassen in PDO: PDO PDOStatement PDOException INI-Einstellungen: pdo.dsn.* = ...

Alle geladenen Erweiterungen mit Versionen auflisten

<?php
foreach (get_loaded_extensions() as $extName) {
    $ext = new ReflectionExtension($extName);
    printf("%-25s %s\n", $ext->getName(), $ext->getVersion() ?? 'n/a');
}
Core 8.2.0 date 8.2.0 pcre 10.42 ...

// Wichtig · Fallstricke

ReflectionException bei nicht geladener Erweiterung: Wird der Konstruktor mit einem nicht geladenen Erweiterungsnamen aufgerufen, wirft PHP eine ReflectionException. Prüfe vorher mit extension_loaded('name'), ob die Erweiterung verfügbar ist.

Methoden im Überblick: Die wichtigsten Methoden der Klasse sind getName(), getVersion(), getFunctions(), getClasses(), getClassNames(), getConstants(), getINIEntries(), getDependencies() und info(). info() gibt dieselbe Ausgabe wie phpinfo() für diese Extension aus.

Performance: Die Reflection-API ist deutlich langsamer als einfache Funktionen wie extension_loaded(). Sie sollte nicht im Hot-Path einer Anwendung verwendet werden, sondern nur für Analyse- oder Bootstrap-Zwecke.