Start · Sprachen · PHP · Referenz · phpdbg_get_executable

phpdbg_get_executable

Funktion

Liefert eine Liste der ausführbaren Opcodes des aktuell geladenen PHP-Skripts innerhalb der PHPDBG-Umgebung.

seit PHP 5.6.0 Kategorie: misc

Signatur

phpdbg_get_executable(array $options = []): array

Beschreibung

phpdbg_get_executable() ist eine Funktion, die ausschließlich im Kontext des interaktiven PHP-Debuggers PHPDBG (phpdbg) zur Verfügung steht. Sie gibt ein assoziatives Array zurück, das alle ausführbaren Opcodes des aktuell geladenen Skripts enthält. Dies ist nützlich, um eine genaue Übersicht über erreichbaren Code zu erhalten und gezielt Code-Coverage-Analysen durchzuführen.

Die Funktion eignet sich besonders für Entwickler, die verstehen möchten, welche Teile eines Skripts tatsächlich ausgeführt werden können (d. h. erreichbare Opcodes besitzen) – etwa beim Testen von Code-Abdeckung oder beim Debuggen von Optimierungsproblemen.

Über den optionalen Parameter options kann das Verhalten der Funktion gesteuert werden, z. B. ob nur bestimmte Dateien oder Klassen berücksichtigt werden sollen. Das zurückgegebene Array ist nach Dateinamen und Zeilennummern strukturiert und enthält jeweils die zugehörigen Opcode-Informationen.

Wichtig: Diese Funktion ist nur innerhalb einer aktiven PHPDBG-Sitzung verfügbar und führt außerhalb dieses Kontexts zu einem fatalen Fehler.

Parameter

Name Typ Default Beschreibung
$options array [] Ein assoziatives Array mit optionalen Steuerschlüsseln. Mögliche Schlüssel sind z. B. "from" (Startklasse/-datei) und "quiet" (unterdrückt Ausgaben). Wird kein Array übergeben, werden alle ausführbaren Opcodes des gesamten Skripts zurückgegeben.

Rückgabewert

Typ
array
Beschreibung
Gibt ein mehrdimensionales assoziatives Array zurück. Die erste Ebene enthält Dateinamen als Schlüssel, die zweite Ebene Zeilennummern und die dritte Ebene die zugehörigen Opcode-Details (z. B. ob eine Zeile ausführbaren Code enthält).

Beispiele

Alle ausführbaren Opcodes des aktuellen Skripts abrufen

<?php
// Nur innerhalb einer PHPDBG-Sitzung ausführen!
if (function_exists('phpdbg_get_executable')) {
    $opcodes = phpdbg_get_executable();
    foreach ($opcodes as $file => $lines) {
        echo "Datei: $file\n";
        foreach ($lines as $lineNo => $info) {
            echo "  Zeile $lineNo: " . print_r($info, true) . "\n";
        }
    }
} else {
    echo "phpdbg_get_executable ist nur in PHPDBG verfügbar.\n";
}
Datei: /pfad/zum/skript.php Zeile 3: ... Zeile 5: ...

Ausführbare Opcodes mit Optionsfilter abrufen

<?php
// Nur innerhalb einer PHPDBG-Sitzung ausführen!
if (function_exists('phpdbg_get_executable')) {
    // Nur Opcodes aus einer bestimmten Klasse ermitteln
    $opcodes = phpdbg_get_executable([
        'from' => 'MeineKlasse',
    ]);
    echo "Anzahl betroffener Dateien: " . count($opcodes) . "\n";
    print_r($opcodes);
}
Anzahl betroffener Dateien: 1 Array ( [/pfad/MeineKlasse.php] => Array ( [12] => 1 [15] => 1 ) )

// Wichtig · Fallstricke

Nur in PHPDBG verfügbar: phpdbg_get_executable() ist ausschließlich in der PHPDBG-Umgebung definiert. Der Aufruf außerhalb von PHPDBG führt zu einem fatalen Fehler (Call to undefined function). Prüfe daher stets mit function_exists('phpdbg_get_executable'), bevor du die Funktion verwendest.

Die Funktion ist besonders nützlich im Zusammenspiel mit phpdbg_start_oplog() und phpdbg_end_oplog(), um Code-Coverage-Daten zu erzeugen und unausgeführte Zweige zu identifizieren.

Die genaue Struktur des zurückgegebenen Arrays kann je nach PHP-Version und Skript variieren; verlasse dich nicht auf eine feste Schlüsselstruktur ohne vorherige Prüfung.