Список меток (tokens) парсера
Различные части PHP внутренне представлены типами вроде T_SR. PHP выводит идентификаторы вроде этого в ошибках парсинга, например: "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."
Предполагается, что вы знаете что означает T_SR. Для всех, кто этого не знает ниже есть таблица этих идентификаторов с синтаксисом и ссылками на соответствующие разделы документации.
Замечание: Использование T_* констант
Все метки приведенные ниже также являются PHP-константами. Их значение автоматически генерируется на основе базовой инфраструктуры анализатора РНР. Это означает, что конкретное значение метки может изменяться между двумя версиями PHP. Например, константа T_FILE имеет значение 365 в PHP 5.3, в то время как это же значение относится к T_TRAIT в PHP 5.4, а значение константы T_FILE равно 369. Это означает, что для обеспечения совместивости в различных версиях PHP ваш код никогда не должен зависеть напрямую от значений T_* констант из какой-либо определенной версии PHP. Вместо этого ваш код должен использовать собственные значения (использовать длинные числа типа 10000) и соответствующую стратегию, которая будет работать со всеми версиями PHP и значениями T_* констант.
| Метка | Синтаксис | Ссылка |
|---|---|---|
| T_ABSTRACT | abstract | Абстрактные классы (начиная с PHP 5.0.0) |
| T_AND_EQUAL | &= | операторы присваивания |
| T_ARRAY | array() | array(), синтаксис массива |
| T_ARRAY_CAST | (array) | приведение типа |
| T_AS | as | foreach |
| T_BAD_CHARACTER | все что ниже ASCII 32 исключая \t (0x09), \n (0x0a) и \r (0x0d) | |
| T_BOOLEAN_AND | && | логические операторы |
| T_BOOLEAN_OR | || | логические операторы |
| T_BOOL_CAST | (bool) or (boolean) | приведение типа |
| T_BREAK | break | break |
| T_CASE | case | switch |
| T_CATCH | catch | Исключения (начиная с PHP 5.0.0) |
| T_CHARACTER | больше не используется | |
| T_CLASS | class | классы и объекты |
| T_CLASS_C | __CLASS__ | магические константы (начиная с PHP 4.3.0) |
| T_CLONE | clone | классы и объекты (начиная с PHP 5.0.0) |
| T_CLOSE_TAG | ?> or %> | PHP-код внутри HTML |
| T_COMMENT | // или #, и /* */ в PHP 5 | комментарии |
| T_CONCAT_EQUAL | .= | операторы присваивания |
| T_CONST | const | константы класса |
| T_CONSTANT_ENCAPSED_STRING | "foo" или 'bar' | строковой синтаксис |
| T_CONTINUE | continue | continue |
| T_CURLY_OPEN | {$ | переменные внутри строки |
| T_DEC | -- | операторы инкремента\декремента |
| T_DECLARE | declare | declare |
| T_DEFAULT | default | switch |
| T_DIR | __DIR__ | магические константы (начиная с PHP 5.3.0) |
| T_DIV_EQUAL | /= | операторы присваивания |
| T_DNUMBER | 0.12, и т.д. | числа с плавающей точкой |
| T_DOC_COMMENT | /** */ | PHPDoc-комментарии (начиная с PHP 5.0.0) |
| T_DO | do | do..while |
| T_DOLLAR_OPEN_CURLY_BRACES | ${ | переменная внутри строки |
| T_DOUBLE_ARROW | => | синтаксис массивов |
| T_DOUBLE_CAST | (real), (double) или (float) | приведение типов |
| T_DOUBLE_COLON | :: | см. ниже T_PAAMAYIM_NEKUDOTAYIM |
| T_ECHO | echo | echo() |
| T_ELSE | else | else |
| T_ELSEIF | elseif | elseif |
| T_EMPTY | empty | empty() |
| T_ENCAPSED_AND_WHITESPACE | " $a" | константная часть строки с переменными |
| T_ENDDECLARE | enddeclare | declare, альтернативный синтаксис |
| T_ENDFOR | endfor | for, альтернативный синтаксис |
| T_ENDFOREACH | endforeach | foreach, альтернативный синтаксис |
| T_ENDIF | endif | if, альтернативный синтаксис |
| T_ENDSWITCH | endswitch | switch, альтернативный синтаксис |
| T_ENDWHILE | endwhile | while, альтернативный синтаксис |
| T_END_HEREDOC | синтаксис heredoc | |
| T_EVAL | eval() | eval() |
| T_EXIT | exit or die | exit(), die() |
| T_EXTENDS | extends | extends, классы и объекты |
| T_FILE | __FILE__ | магические константы |
| T_FINAL | final | Ключевое слово "final" (доступно с PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | функции |
| T_FUNC_C | __FUNCTION__ | магические константы (начиная с PHP 4.3.0) |
| T_GLOBAL | global | область видимости переменной |
| T_GOTO | goto | (доступно с PHP 5.3.0) |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (доступно с PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | Интерфейсы объектов (доступно с PHP 5.0.0) |
| T_INC | ++ | операторы инкремента\декремента |
| T_INCLUDE | include() | include() |
| T_INCLUDE_ONCE | include_once() | include_once() |
| T_INLINE_HTML | текст вне PHP | |
| T_INSTANCEOF | instanceof | операторы типа (начиная с PHP 5.0.0) |
| T_INT_CAST | (int) или (integer) | приведение типов |
| T_INTERFACE | interface | Интерфейсы объектов (начиная с PHP 5.0.0) |
| T_ISSET | isset() | isset() |
| T_IS_EQUAL | == | операторы сравнения |
| T_IS_GREATER_OR_EQUAL | >= | операторы сравнения |
| T_IS_IDENTICAL | === | операторы сравнения |
| T_IS_NOT_EQUAL | != or <> | операторы сравнения |
| T_IS_NOT_IDENTICAL | !== | операторы сравнения |
| T_IS_SMALLER_OR_EQUAL | <= | операторы сравнения |
| T_LINE | __LINE__ | магические константы |
| T_LIST | list() | list() |
| T_LNUMBER | 123, 012, 0x1ac, и т.д. | целые числа |
| T_LOGICAL_AND | and | логические операторы |
| T_LOGICAL_OR | or | логические операторы |
| T_LOGICAL_XOR | xor | логические операторы |
| T_METHOD_C | __METHOD__ | магические константы (начиная с PHP 5.0.0) |
| T_MINUS_EQUAL | -= | операторы присваивания |
| T_ML_COMMENT | /* и */ | комментарии (только PHP 4) |
| T_MOD_EQUAL | %= | операторы присваивания |
| T_MUL_EQUAL | *= | операторы присваивания |
| T_NAMESPACE | namespace | пространства имен (начиная с PHP 5.3.0) |
| T_NS_C | __NAMESPACE__ | пространства имен (начиная с PHP 5.3.0) |
| T_NS_SEPARATOR | \ | пространства имен (начиная с PHP 5.3.0) |
| T_NEW | new | классы и объекты |
| T_NUM_STRING | "$a[0]" | цифровой индекс массива внутри строки |
| T_OBJECT_CAST | (object) | приведение типов |
| T_OBJECT_OPERATOR | -> | классы и объекты |
| T_OLD_FUNCTION | old_function | (только в PHP 4) |
| T_OPEN_TAG | <?php, <? или <% | PHP-код внутри HTML |
| T_OPEN_TAG_WITH_ECHO | <?= or <%= | PHP-код внутри HTML |
| T_OR_EQUAL | |= | операторы присваивания |
| T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Также определяется как T_DOUBLE_COLON. |
| T_PLUS_EQUAL | += | операторы присваивания |
| T_PRINT | print() | print() |
| T_PRIVATE | private | классы и объекты (начиная с PHP 5.0.0) |
| T_PUBLIC | public | классы и объекты (начиная с PHP 5.0.0) |
| T_PROTECTED | protected | классы и объекты (начиная с PHP 5.0.0) |
| T_REQUIRE | require() | require() |
| T_REQUIRE_ONCE | require_once() | require_once() |
| T_RETURN | return | возвращаемые значения |
| T_SL | << | побитовые операторы |
| T_SL_EQUAL | <<= | операторы присваивания |
| T_SR | >> | побитовые операторы |
| T_SR_EQUAL | >>= | операторы присваивания |
| T_START_HEREDOC | <<< | синтаксис heredoc |
| T_STATIC | static | область видимости переменной |
| T_STRING | "parent" | идентификаторы, например строки, объектно-ориентированные ключевые слова вроде parent и self, функции, классы и некоторые другие. |
| T_STRING_CAST | (string) | приведение типов |
| T_STRING_VARNAME | "${a | переменные внутри строки |
| T_SWITCH | switch | switch |
| T_THROW | throw | Исключения (начиная с PHP 5.0.0) |
| T_TRY | try | Исключения (начиная с PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | приведение типов (начиная с PHP 5.0.0) |
| T_USE | use | пространства имен (начиная с PHP 5.3.0; зарезервировано с PHP 4.0.0) |
| T_VAR | var | классы и объекты |
| T_VARIABLE | $foo | переменные |
| T_WHILE | while | while, do..while |
| T_WHITESPACE | \t \r\n | |
| T_XOR_EQUAL | ^= | операторы присваивания |
См. так же token_name().
- История PHP и смежных проектов
- Переход с PHP 5.3.x на PHP 5.4.x
- Переход c PHP 5.2.x на PHP 5.3.x
- Переход с PHP 5.1.x на PHP 5.2.x
- Переход с PHP 5.0.x на PHP 5.1.x
- Переход с PHP 4 на PHP 5
- Classes and Objects (PHP 4)
- Отладка в PHP
- Configure options
- Директивы php.ini
- Список/классификация расширений
- Список псевдонимов функций
- Список зарезервированных слов
- List of Resource Types
- Список доступных фильтров
- Список поддерживаемых транспортных протоколов
- Таблица сравнения типов в PHP
- Список меток (tokens) парсера
- Руководство по именованию
- Об этом руководстве
- Creative Commons Attribution 3.0
- Алфавитный список
Коментарии
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... :(
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.
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)
;