Signatur
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
"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
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);
}
}
// 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.