Start · Sprachen · PHP · Referenz · token_name

token_name

Funktion

Gibt den symbolischen Bezeichner (Namen) eines PHP-Parser-Tokens als Zeichenkette zurück.

seit PHP 4.2.0 Kategorie: misc

Signatur

token_name(int $token): string

Beschreibung

token_name() gehört zur PHP Tokenizer-Erweiterung und wandelt eine numerische Token-Konstante (z. B. T_ECHO, T_VARIABLE) in ihren lesbaren Bezeichner als Zeichenkette um. Die Funktion ist das Gegenstück zu den T_*-Konstanten und ermöglicht die menschenlesbare Ausgabe bei der Analyse von PHP-Quellcode.

Typischerweise wird token_name() in Kombination mit token_get_all() eingesetzt: token_get_all() liefert ein Array von Tokens, wobei komplexe Tokens als Array mit der numerischen ID, dem Quelltext und der Zeilennummer vorliegen. Mit token_name() lässt sich die numerische ID anschließend in einen verständlichen Namen umwandeln.

Die Funktion ist besonders nützlich beim Schreiben von PHP-Analyzern, Linters, Code-Formatierern oder beim Debuggen von Tokenizer-Ausgaben. Einzel-Zeichen-Tokens (wie ;, {, }) werden von token_get_all() direkt als Zeichenkette zurückgegeben und besitzen keine numerische ID – für sie wird token_name() nicht benötigt.

Ist der übergebene Wert kein bekannter Token-Bezeichner, gibt die Funktion die Zeichenkette UNKNOWN zurück.

Parameter

Name Typ Default Beschreibung
$token Pflicht int Eine numerische PHP-Token-Konstante, z. B. T_ECHO, T_VARIABLE oder T_WHITESPACE. Entspricht dem ersten Element eines Token-Arrays, das von token_get_all() zurückgegeben wird.

Rückgabewert

Typ
string
Beschreibung
Gibt den symbolischen Namen des Tokens als Zeichenkette zurück, z. B. "T_ECHO" oder "T_VARIABLE". Bei einem unbekannten Wert wird "UNKNOWN" zurückgegeben.

Beispiele

Einfacher Einsatz: Token-ID in Namen umwandeln

<?php
// Gibt den Namen der Konstante T_ECHO aus
echo token_name(T_ECHO);       // T_ECHO
echo PHP_EOL;
echo token_name(T_VARIABLE);   // T_VARIABLE
echo PHP_EOL;
echo token_name(T_WHITESPACE); // T_WHITESPACE
echo PHP_EOL;
echo token_name(99999);        // UNKNOWN
T_ECHO T_VARIABLE T_WHITESPACE UNKNOWN

Kombination mit token_get_all() zur Analyse von PHP-Quellcode

<?php
$code = '<?php echo $name; ?>';
$tokens = token_get_all($code);

foreach ($tokens as $token) {
    if (is_array($token)) {
        // Token ist [id, text, zeile]
        $id   = $token[0];
        $text = $token[1];
        $line = $token[2];
        printf(
            "Zeile %d | %-20s | %s\n",
            $line,
            token_name($id),
            trim($text)
        );
    } else {
        // Einzel-Zeichen-Token, z. B. ';'
        printf("       | %-20s | %s\n", 'CHAR', $token);
    }
}
Zeile 1 | T_OPEN_TAG | <?php Zeile 1 | T_ECHO | echo Zeile 1 | T_WHITESPACE | Zeile 1 | T_VARIABLE | $name Zeile 1 | T_WHITESPACE | | CHAR | ; Zeile 1 | T_WHITESPACE | Zeile 1 | T_CLOSE_TAG | ?>

// Wichtig · Fallstricke

Verfügbarkeit: Die Tokenizer-Erweiterung ist standardmäßig in PHP eingebunden und muss nicht separat aktiviert werden. Sie ist jedoch nicht in allen minimalen PHP-Builds enthalten – bei Bedarf mit extension=tokenizer in der php.ini aktivieren.

Einzelzeichen-Tokens: Tokens wie ;, ( oder ) werden von token_get_all() als einfache Zeichenkette zurückgegeben. Für sie existiert keine numerische ID und token_name() ist nicht anwendbar – prüfe mit is_array(), ob ein Token komplex ist.

PHP 8.0+: Ab PHP 8.0 können Tokens auch als PhpToken-Objekte (via PhpToken::tokenize()) abgerufen werden, die eine getTokenName()-Methode besitzen.

Siehe auch