PHP 7.1.12 Released

Список меток (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) или (boolean) приведение типа
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch Исключения (начиная с PHP 5.0.0)
T_CHARACTER   больше не используется
T_CLASS class классы и объекты
T_CLASS_C __CLASS__ магические константы
T_CLONE clone классы и объекты
T_CLOSE_TAG ?> или %> PHP-код внутри HTML
T_COMMENT // или #, и /* */ комментарии
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-комментарии
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_ELLIPSIS ... аргументы функции (доступно с PHP 5.6.0)
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 или die exit(), die()
T_EXTENDS extends extends, классы и объекты
T_FILE __FILE__ магические константы
T_FINAL final Ключевое слово "final"
T_FINALLY finally Исключения (доступно с PHP 5.5.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function или cfunction функции
T_FUNC_C __FUNCTION__ магические константы
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 Интерфейсы объектов
T_INC ++ операторы инкремента\декремента
T_INCLUDE include() include
T_INCLUDE_ONCE include_once() include_once
T_INLINE_HTML   текст вне PHP
T_INSTANCEOF instanceof операторы типа
T_INSTEADOF insteadof Трейты (доступно начиная с PHP 5.4.0)
T_INT_CAST (int) или (integer) приведение типов
T_INTERFACE interface Интерфейсы объектов
T_ISSET isset() isset()
T_IS_EQUAL == операторы сравнения
T_IS_GREATER_OR_EQUAL >= операторы сравнения
T_IS_IDENTICAL === операторы сравнения
T_IS_NOT_EQUAL != или <> операторы сравнения
T_IS_NOT_IDENTICAL !== операторы сравнения
T_IS_SMALLER_OR_EQUAL <= операторы сравнения
T_SPACESHIP <=> Операторы сравнения (доступно начиная с PHP 7.0.0)
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__ магические константы
T_MINUS_EQUAL -= операторы присваивания
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_OPEN_TAG <?php, <? или <% PHP-код внутри HTML
T_OPEN_TAG_WITH_ECHO <?= или <%= PHP-код внутри HTML
T_OR_EQUAL |= операторы присваивания
T_PAAMAYIM_NEKUDOTAYIM :: ::. Также определяется как T_DOUBLE_COLON.
T_PLUS_EQUAL += операторы присваивания
T_POW ** арифметические операторы (доступно с PHP 5.6.0)
T_POW_EQUAL **= операторы присваивания (доступно с PHP 5.6.0)
T_PRINT print() print
T_PRIVATE private классы и объекты
T_PUBLIC public классы и объекты
T_PROTECTED protected классы и объекты
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, self и т.п.. идентификаторы, например, ключевые слова вроде parent и self, сюда подходят также имена функций, классов и некоторые другие. Смотрите также T_CONSTANT_ENCAPSED_STRING
T_STRING_CAST (string) приведение типов
T_STRING_VARNAME "${a переменные внутри строки
T_SWITCH switch switch
T_THROW throw Исключения
T_TRAIT trait Трейты (начиная с PHP 5.4.0)
T_TRAIT_C __TRAIT__ __TRAIT__ (начиная с PHP 5.4.0)
T_TRY try Исключения
T_UNSET unset() unset()
T_UNSET_CAST (unset) приведение типов
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 ^= операторы присваивания
T_YIELD yield генераторы (доступно с PHP 5.5.0)
T_YIELD_FROM yield from generators (доступно с PHP 7.0.0)

Смотрите также token_name().

add a note add a note

User Contributed Notes 2 notes

up
6
nathan at unfinitydesign dot com
9 years ago
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.
up
3
fgm at osinet dot fr
9 years ago
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)
  ;
To Top