Verschiedene Teile der Sprache PHP werden intern durch Typen wie T_SR repräsentiert. PHP gibt Bezeichner wie diese in Parserfehlermeldungen wie "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." aus.
You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.
Token | Syntax | Referenz |
---|---|---|
T_ABSTRACT | abstract | Klassenabstraktion (verfügbar ab PHP 5.0.0) |
T_AND_EQUAL | &= | Zuweisungsoperatoren |
T_ARRAY | array() | array(), array syntax |
T_ARRAY_CAST | (array) | type-casting |
T_AS | as | foreach |
T_BAD_CHARACTER | Alle Zeichen unterhalb von ASCII 32 mit Ausnahme von \t (0x09), \n (0x0a) und \r (0x0d) | |
T_BOOLEAN_AND | && | Logische Operatoren |
T_BOOLEAN_OR | || | Logische Operatoren |
T_BOOL_CAST | (bool) or (boolean) | type-casting |
T_BREAK | break | break |
T_CASE | case | switch |
T_CATCH | catch | Ausnahmebehandlung (verfügbar ab PHP 5.0.0) |
T_CHARACTER | ||
T_CLASS | class | Klassen und Objekte |
T_CLASS_C | __CLASS__ | Magische Konstanten (verfügbar ab PHP 4.3.0) |
T_CLONE | clone | Klassen und Objekte (verfügbar ab PHP 5.0.0) |
T_CLOSE_TAG | ?> oder %> | |
T_COMMENT | // oder #, und /* */ in PHP 5 | Kommentare |
T_CONCAT_EQUAL | .= | Zuweisungsoperatoren |
T_CONST | const | |
T_CONSTANT_ENCAPSED_STRING | "foo" oder 'bar' | Stringsyntax |
T_CONTINUE | continue | |
T_CURLY_OPEN | ||
T_DEC | -- | Inkrement- bzw. Dekrementoperatoren |
T_DECLARE | declare | declare |
T_DEFAULT | default | switch |
T_DIR | __DIR__ | Magische Konstanten (verfügbar ab PHP 5.3.0) |
T_DIV_EQUAL | /= | Zuweisungsoperatoren |
T_DNUMBER | 0.12, etc | Fließkommawerte |
T_DOC_COMMENT | /** */ | Kommentare im PHPDoc Stil (verfügbar ab PHP 5.0.0) |
T_DO | do | do..while |
T_DOLLAR_OPEN_CURLY_BRACES | ${ | complex variable parsed syntax |
T_DOUBLE_ARROW | => | Arraysyntax |
T_DOUBLE_CAST | (real), (double) or (float) | Typumwandlung |
T_DOUBLE_COLON | :: | Siehe T_PAAMAYIM_NEKUDOTAYIM weiter unten |
T_ECHO | echo | echo() |
T_ELSE | else | else |
T_ELSEIF | elseif | elseif |
T_EMPTY | empty | empty() |
T_ENCAPSED_AND_WHITESPACE | ||
T_ENDDECLARE | enddeclare | declare, Alternative Syntax |
T_ENDFOR | endfor | for, Alternative Syntax |
T_ENDFOREACH | endforeach | foreach, Alternative Syntax |
T_ENDIF | endif | if, Alternative Syntax |
T_ENDSWITCH | endswitch | switch, Alternative Syntax |
T_ENDWHILE | endwhile | while, Alternative Syntax |
T_END_HEREDOC | 'heredoc'-Syntax | |
T_EVAL | eval() | eval() |
T_EXIT | exit oder die | exit(), die() |
T_EXTENDS | extends | extends, Klassen und Objekte |
T_FILE | __FILE__ | Magische Konstanten |
T_FINAL | final | Final-Schlüsselwort (verfügbar ab PHP 5.0.0) |
T_FOR | for | for |
T_FOREACH | foreach | foreach |
T_FUNCTION | function oder cfunction | Funktionen |
T_FUNC_C | __FUNCTION__ | Magische Konstanten (verfügbar ab PHP 4.3.0) |
T_GLOBAL | global | Geltungsbereich von Variablen |
T_GOTO | goto | Undokumentiert (verfügbar ab PHP 5.3.0) |
T_HALT_COMPILER | __halt_compiler() | __halt_compiler (verfügbar ab PHP 5.1.0) |
T_IF | if | if |
T_IMPLEMENTS | implements | Interfaces (verfügbar ab PHP 5.0.0) |
T_INC | ++ | Inkrement- bzw. Dekrementoperatoren |
T_INCLUDE | include() | include() |
T_INCLUDE_ONCE | include_once() | include_once() |
T_INLINE_HTML | ||
T_INSTANCEOF | instanceof | type operators (verfügbar ab PHP 5.0.0) |
T_INT_CAST | (int) oder (integer) | Typumwandlung |
T_INTERFACE | interface | Interfaces (verfügbar ab PHP 5.0.0) |
T_ISSET | isset() | isset() |
T_IS_EQUAL | == | Vergleichsoperator |
T_IS_GREATER_OR_EQUAL | >= | Vergleichsoperator |
T_IS_IDENTICAL | === | Vergleichsoperator |
T_IS_NOT_EQUAL | != or <> | Vergleichsoperator |
T_IS_NOT_IDENTICAL | !== | Vergleichsoperator |
T_IS_SMALLER_OR_EQUAL | <= | Vergleichsoperator |
T_LINE | __LINE__ | Magische Konstanten |
T_LIST | list() | list() |
T_LNUMBER | 123, 012, 0x1ac, etc | Integerwerte |
T_LOGICAL_AND | and | Logische Operatoren |
T_LOGICAL_OR | or | Logische Operatoren |
T_LOGICAL_XOR | xor | Logische Operatoren |
T_METHOD_C | __METHOD__ | Magische Konstanten (verfügbar ab PHP 5.0.0) |
T_MINUS_EQUAL | -= | Zuweisungsoperatoren |
T_ML_COMMENT | /* and */ | Kommentare (nur PHP 4) |
T_MOD_EQUAL | %= | Zuweisungsoperatoren |
T_MUL_EQUAL | *= | Zuweisungsoperatoren |
T_NS_C | __NAMESPACE__ | namespaces. Auch definiert als T_NAMESPACE (verfügbar ab PHP 5.3.0) |
T_NEW | new | Klassen und Objekte |
T_NUM_STRING | ||
T_OBJECT_CAST | (object) | Typumwandlung |
T_OBJECT_OPERATOR | -> | Klassen und Objekte |
T_OLD_FUNCTION | old_function | |
T_OPEN_TAG | <?php, <? or <% | HTML-Bereich der Datei verlassen |
T_OPEN_TAG_WITH_ECHO | <?= or <%= | HTML-Bereich der Datei verlassen |
T_OR_EQUAL | |= | Zuweisungsoperatoren |
T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Auch definiert als T_DOUBLE_COLON. |
T_PLUS_EQUAL | += | Zuweisungsoperatoren |
T_PRINT | print() | print() |
T_PRIVATE | private | Klassen und Objekte (verfügbar ab PHP 5.0.0) |
T_PUBLIC | public | Klassen und Objekte (verfügbar ab PHP 5.0.0) |
T_PROTECTED | protected | Klassen und Objekte (verfügbar ab PHP 5.0.0) |
T_REQUIRE | require() | require() |
T_REQUIRE_ONCE | require_once() | require_once() |
T_RETURN | return | Rückgabe von Werten |
T_SL | << | Bitweise Operatoren |
T_SL_EQUAL | <<= | Zuweisungsoperatoren |
T_SR | >> | Bitweise Operatoren |
T_SR_EQUAL | >>= | Zuweisungsoperatoren |
T_START_HEREDOC | <<< | 'heredoc'-Syntax |
T_STATIC | static | Geltungsbereich von Variablen |
T_STRING | ||
T_STRING_CAST | (string) | Typumwandlung |
T_STRING_VARNAME | ||
T_SWITCH | switch | switch |
T_THROW | throw | Ausnahmebehandlung (verfügbar ab PHP 5.0.0) |
T_TRY | try | Ausnahmebehandlung (verfügbar ab PHP 5.0.0) |
T_UNSET | unset() | unset() |
T_UNSET_CAST | (unset) | Typumwandlung (verfügbar ab PHP 5.0.0) |
T_USE | use | Namensräume (verfügbar ab PHP 5.3.0) |
T_VAR | var | Klassen und Objekte |
T_VARIABLE | $foo | Variablen |
T_WHILE | while | while, do..while |
T_WHITESPACE | ||
T_XOR_EQUAL | ^= | Zuweisungsoperatoren |
Siehe auch token_name().
T_ENCAPSED_AND_WHITESPACED is returned when parsing strings with evaluated content, like "some $value" or this example from the Strings reference page:
<?php
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
This last example is tokenized as:
T_ECHO
echo
T_WHITESPACE
%20 (a space character)
T_START_HEREDOC
<<
T_ENCAPSED_AND_WHITESPACE
My name is "
T_VARIABLE
$name
T_ENCAPSED_AND_WHITESPACE
". I am printing some
T_VARIABLE
$foo
T_OBJECT_OPERATOR
->
T_STRING
foo
T_ENCAPSED_AND_WHITESPACE
. Now, I am printing some
T_CURLY_OPEN
{
T_VARIABLE
$foo
T_OBJECT_OPERATOR
->
T_STRING
bar
(terminal)
[
T_LNUMBER
1
(terminal)
]
(terminal)
}
T_ENCAPSED_AND_WHITESPACE
. This should print a capital 'A': \x41
T_END_HEREDOC
EOT
(terminal)
;
T_ENCAPSED_AND_WHITESPACE is whitespace which intersects a group of tokens. For example, an "unexpected T_ENCAPSED_AND_WHITESPACE" error is produced by the following code:
<?php
$main_output_world = 'snakes!'
echo('There are' 10 $main_output_world);
?>
Note the missing concatenation operator between the two strings leads to the whitespace error that is so named above. The concatenation operator instructs PHP to ignore the whitespace between the two code tokens (the so named "encapsed" data"), rather than parse it as a token itself.
The correct code would be:
<?php
$main_output_world = 'snakes!'
echo('There are' . 10 . $main_output_world);
?>
Note the addition of the concatenation operator between each token.
Some tokens are not documented, so here they are:
all of them are located within non-constant ""-strings:
T_CHARACTER - \r\n\t... . They're presented AS IS and NOT replaced with actual characters
T_ENCAPSED_AND_WHITESPACE - whitespace
T_DOLLAR_OPEN_CURLY_BRACES - ${ (ONLY in non-constant ""-strings)
T_STRING - strings (example: "$a aa")
T_NUM_STRING - numbers (exaple: "$a 0")
still have no idea what T_ENCAPSED_AND_WHITESPACE means... :(