Lista tokenów parsera

Różne części języka PHP są wewnętrznie reprezentowane przez tokeny, na przykład T_SR. PHP wyświetla identyfikatory, takie jak ten, w błędach parsowania, przykładowo "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."

Powinieneś wiedzieć co oznacza T_SR. Dla każdego, kto tego nie nie wie, przygotowano tutaj tabelę zawierającą identyfikator, składnię PHP i odniesienie do odpowiedniego miejsca w podręczniku.

Informacja: Użycie stałych T_*

Wszystkie tokeny wymienione poniżej są także stałymi PHP. Ich wartość jest generowana automatycznie zależnie od podstawy infrastruktury parsera PHP. Oznacza to, że konkretna wartość tokenu może się zmienić między dwiema wersjami PHP. Na przykład stała T_FILE ma wartość 365 w PHP 5.3, podczas gdy ta sama wartość odnosi się do T_TRAIT w PHP 5.4, a wartością stałej T_FILE jest 369. Oznacza to, że Twój kod nigdy nie powinien polegać bezpośrednio na wartościach stałych T_* wziętych z danej wersji PHP, aby zapewnić kompatybilność między wieloma wersjami PHP. Zamiast tego, Twój kod powinien korzystać z własnych wartości (używających dużych liczb jak 10000) i odpowiedniej strategii, która zadziała z wersjami PHP i wartościami stałych T_*.

Tokeny
Token Składnia Odniesienie
T_ABSTRACT abstract Class Abstraction
T_AND_EQUAL &= operatory przypisania
T_ARRAY array() array(), składnia tablic
T_ARRAY_CAST (array) rzutowanie typu
T_AS as foreach
T_BAD_CHARACTER   wszystko poniżej kodu ASCII 32, z wyjątkiem \t (0x09), \n (0x0a) i \r (0x0d)
T_BOOLEAN_AND && operatory logiczne
T_BOOLEAN_OR || operatory logiczne
T_BOOL_CAST (bool) lub (boolean) rzutowanie typu
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch Wyjątki
T_CHARACTER   nie jest dłużej używane
T_CLASS class klasy i obiekty
T_CLASS_C __CLASS__ stałe magiczne
T_CLONE clone klasy i obiekty
T_CLOSE_TAG ?> lub %> uciekanie z HTML
T_COALESCE ?? operatory porównania (dostępne od PHP 7.0.0)
T_COMMENT //, # lub /* */ komentarze
T_CONCAT_EQUAL .= operatory przypisania
T_CONST const stałe klasy
T_CONSTANT_ENCAPSED_STRING "foo" lub 'bar' składnia stringów
T_CONTINUE continue continue
T_CURLY_OPEN {$ złożona składnia parsowania zmiennych
T_DEC -- operator inkrementacji/dekrementacji
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ stałe magiczne (dostępne od PHP 5.3.0)
T_DIV_EQUAL /= operatory przypisania
T_DNUMBER 0.12 itd. liczby zmiennoprzecinkowe
T_DOC_COMMENT /** */ komentarze PHPDoc
T_DO do do..while
T_DOLLAR_OPEN_CURLY_BRACES ${ złożona składnia parsowania zmiennych
T_DOUBLE_ARROW => składnia tablic
T_DOUBLE_CAST (real), (double) lub (float) rzutowanie typu
T_DOUBLE_COLON :: zobacz T_PAAMAYIM_NEKUDOTAYIM poniżej
T_ECHO echo echo
T_ELLIPSIS ... argumenty funkcji (dostępne od PHP 5.6.0)
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHITESPACE " $a" stała część stringu ze zmiennymi
T_ENDDECLARE enddeclare declare, składnia alternatywna
T_ENDFOR endfor for, składnia alternatywna
T_ENDFOREACH endforeach foreach, składnia alternatywna
T_ENDIF endif if, składnia alternatywna
T_ENDSWITCH endswitch switch, składnia alternatywna
T_ENDWHILE endwhile while, składnia alternatywna
T_END_HEREDOC   składnia heredoc
T_EVAL eval() eval()
T_EXIT exit lub die exit(), die()
T_EXTENDS extends extends, klasy i obiekty
T_FILE __FILE__ stałe magiczne
T_FINAL final Final Keyword
T_FINALLY finally Wyjątki (dostępne od PHP 5.5.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION funkcja funkcje
T_FUNC_C __FUNCTION__ stałe magiczne
T_GLOBAL global zasięg zmiennych
T_GOTO goto goto (dostępne od PHP 5.3.0)
T_HALT_COMPILER __halt_compiler() __halt_compiler (dostępne od PHP 5.1.0)
T_IF if if
T_IMPLEMENTS implements Object Interfaces
T_INC ++ operator inkrementacji/dekrementacji
T_INCLUDE include() include
T_INCLUDE_ONCE include_once() include_once
T_INLINE_HTML   tekst poza PHP
T_INSTANCEOF instanceof operatory typów
T_INSTEADOF insteadof Traits (dostępne od PHP 5.4.0)
T_INT_CAST (int) lub (integer) rzutowanie typu
T_INTERFACE interface Object Interfaces
T_ISSET isset() isset()
T_IS_EQUAL == operatory porównania
T_IS_GREATER_OR_EQUAL >= operatory porównania
T_IS_IDENTICAL === operatory porównania
T_IS_NOT_EQUAL != lub <> operatory porównania
T_IS_NOT_IDENTICAL !== operatory porównania
T_IS_SMALLER_OR_EQUAL <= operatory porównania
T_SPACESHIP <=> operatory porównania (dostępne od PHP 7.0.0)
T_LINE __LINE__ stałe magiczne
T_LIST list() list()
T_LNUMBER 123, 012, 0x1ac itd. liczby całkowite
T_LOGICAL_AND and operatory logiczne
T_LOGICAL_OR or operatory logiczne
T_LOGICAL_XOR xor operatory logiczne
T_METHOD_C __METHOD__ stałe magiczne
T_MINUS_EQUAL -= operatory przypisania
T_MOD_EQUAL %= operatory przypisania
T_MUL_EQUAL *= operatory przypisania
T_NAMESPACE namespace przestrzenie nazw (dostępne od PHP 5.3.0)
T_NS_C __NAMESPACE__ przestrzenie nazw (dostępne od PHP 5.3.0)
T_NS_SEPARATOR \ przestrzenie nazw (dostęne od PHP 5.3.0)
T_NEW new klasy i obiekty
T_NUM_STRING "$a[0]" numeryczny indeks tablicy wewnątrz stringu
T_OBJECT_CAST (object) rzutowanie typu
T_OBJECT_OPERATOR -> klasy i obiekty
T_OPEN_TAG <?php, <? lub <% uciekanie z HTML
T_OPEN_TAG_WITH_ECHO <?= lub <%= uciekanie z HTML
T_OR_EQUAL |= operatory przypisania
T_PAAMAYIM_NEKUDOTAYIM :: ::. Zdefiniowana także jako T_DOUBLE_COLON.
T_PLUS_EQUAL += operatory przypisania
T_POW ** operatory arytmetyczne (dostępne od PHP 5.6.0)
T_POW_EQUAL **= operatory przypisania (dostępne od PHP 5.6.0)
T_PRINT print() print
T_PRIVATE private klasy i obiekty
T_PUBLIC public klasy i obiekty
T_PROTECTED protected klasy i obiekty
T_REQUIRE require() require
T_REQUIRE_ONCE require_once() require_once
T_RETURN return zwracanie wartości
T_SL << operatory bitowe
T_SL_EQUAL <<= operatory porównania
T_SR >> operatory bitowe
T_SR_EQUAL >>= operatory porównania
T_START_HEREDOC <<< składnia heredoc
T_STATIC static zasięg zmiennych
T_STRING parent, self itd. identyfikatory, np. słowa kluczowe jak parent czy self, nazwy funkcji, klas i więcej. Zobacz także T_CONSTANT_ENCAPSED_STRING.
T_STRING_CAST (string) rzutowanie typu
T_STRING_VARNAME "${a złożona składnia parsowania zmiennych
T_SWITCH switch switch
T_THROW throw Wyjątki
T_TRAIT trait Traits (dostępne od PHP 5.4.0)
T_TRAIT_C __TRAIT__ __TRAIT__ (dostępne od PHP 5.4.0)
T_TRY try Wyjątki
T_UNSET unset() unset()
T_UNSET_CAST (unset) rzutowanie typu
T_USE use przestrzenie nazw (dostępne od PHP 5.3.0)
T_VAR var klasy i obiekty
T_VARIABLE $foo zmienne
T_WHILE while while, do..while
T_WHITESPACE \t \r\n  
T_XOR_EQUAL ^= operatory przypisania
T_YIELD yield generatory (dostęne od PHP 5.5.0)
T_YIELD_FROM yield from generatory (dostępne od PHP 7.0.0)

Zobacz także token_name().

add a note add a note

User Contributed Notes 3 notes

up
5
nathan at unfinitydesign dot com
11 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
11 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)
  ;
up
0
geompse at gmail dot com
1 year ago
Tokens that are strings and not arrays (including a T_* constant) can be misleading, ie "$a&$b" (bitwise operator) and "$a=&$b" (reference assignation) where both "&" are string tokens.
To Top