Список меток (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__ | магические константы (начиная с PHP 4.3.0) |
T_CLONE |
clone | классы и объекты (начиная с PHP 5.0.0) |
T_CLOSE_TAG |
?> или %> | 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 или die | exit(), die() |
T_EXTENDS |
extends | extends, классы и объекты |
T_FILE |
__FILE__ | магические константы |
T_FINAL |
final | Ключевое слово "final" (доступно с PHP 5.0.0) |
T_FINALLY |
finally | Исключения (доступно с PHP 5.5.0) |
T_FOR |
for | for |
T_FOREACH |
foreach | foreach |
T_FUNCTION |
function или 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_INSTEADOF |
insteadof | Трейты (доступно начиная с PHP 5.4.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 |
!= или <> | операторы сравнения |
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 |
<?= или <%= | PHP-код внутри HTML |
T_OR_EQUAL |
|= | операторы присваивания |
T_PAAMAYIM_NEKUDOTAYIM |
:: | ::. Также определяется как
T_DOUBLE_COLON . |
T_PLUS_EQUAL |
+= | операторы присваивания |
T_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, true и т.п. |
идентификаторы, например, ключевые слова вроде parent и self,
сюда подходят также имена функций, классов и некоторые другие.
Смотрите также T_CONSTANT_ENCAPSED_STRING
|
T_STRING_CAST |
(string) | приведение типов |
T_STRING_VARNAME |
"${a | переменные внутри строки |
T_SWITCH |
switch | switch |
T_THROW |
throw | Исключения (начиная с PHP 5.0.0) |
T_TRAIT |
trait | Трейты (начиная с PHP 5.4.0) |
T_TRAIT_C |
__TRAIT__ | __TRAIT__ (начиная с PHP 5.4.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 |
^= | операторы присваивания |
T_YIELD |
yield | генераторы (доступно с PHP 5.5.0) |
Смотрите также token_name().
- История PHP и смежных проектов
- Migrating from PHP 7.0.x to PHP 7.1.x
- Migrating from PHP 5.6.x to PHP 7.0.x
- Migrating from PHP 5.5.x to PHP 5.6.x
- Migrating from PHP 5.4.x to PHP 5.5.x
- Переход с 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.0.x
- Classes and Objects (PHP 4)
- Отладка в PHP
- Опции конфигурации
- Директивы php.ini
- Список/классификация расширений
- Список псевдонимов функций
- Список зарезервированных слов
- Список типов ресурсов
- Список доступных фильтров
- Список поддерживаемых транспортных протоколов
- Таблица сравнения типов в PHP
- Список меток (tokens) парсера
- Руководство по именованию
- Об этом руководстве
- Creative Commons Attribution 3.0
- Алфавитный список
- Список изменений
Коментарии
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)
;
In the above table of Tokens, it's worth noting that the bracketed text of "available as of PHP x.y.z" can mean one of two things:
[] This *parser token* is available as of PHP x.y.z
{eg. T_BAD_CHARACTER, T_NAME_QUALIFIED}
[] This *language feature* is available as of PHP x.y.z
{eg. T_ATTRIBUTE, T_COALESCE_EQUAL}