SunshinePHP Developer Conference 2015

Lista semnelor interpretorului

Diverse părți ale limbajului PHP sunt reprezentate intern de tipuri precum T_SR. PHP afișează asemenea identificatori în erori de interpretare astfel: "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."

Trebuie să cunoașteți ce reprezintă T_SR. Pentru cei ce nu cunosc, iată un tabel cu acești identificatori, sintaxa PHP și referințe către locurile corespunzătoare din manual.

Notă: Utilizarea constantelor T_*

Toate semnele afișate mai jos sunt de asemenea definite și ca constante PHP. Valorile lor este generată automat în baza infrastructurii din cadrul analizatorului PHP. Aceasta înseamnă că valoarea concretă a unui semn poate să se modifice între două versiuni PHP. Spre exemplu constanta T_FILE este 365 în PHP 5.3, în timp ce aceeași valoare acum se referă la T_TRAIT în PHP 5.4 și valoarea T_FILE este 369. Aceasta înseamnă că codul dumneavoastră nu trebuie să se bazeze direct pe valorile T_* originale ale PHP de versiunea X.Y.Z, pentru a oferi o compatibilitate între mai multe versiuni ale PHP. În loc, în codul dumneavoastră ar trebui să utilizați valori personalizate (de ex. numere mari cum ar fi 10000) și o strategie potrivită care va lucra cu ambele versiuni PHP și cu valorile T_*.

Semne
Semn Sintaxă Referință
T_ABSTRACT abstract Clase Abstracte (disponibil începând cu PHP 5.0.0)
T_AND_EQUAL &= operatori de atribuire
T_ARRAY array() array(), sintaxa tabloutilor
T_ARRAY_CAST (array) type-casting
T_AS as foreach
T_BAD_CHARACTER   orice caracter cu codul ASCII mai mic decât 32 cu excepția \t (0x09), \n (0x0a) și \r (0x0d)
T_BOOLEAN_AND && operatori logici
T_BOOLEAN_OR || operatori logici
T_BOOL_CAST (bool) sau (boolean) type-casting
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch Exceptions (disponibil începând cu PHP 5.0.0)
T_CHARACTER   nu mai este utilizat
T_CLASS class clase și obiecte
T_CLASS_C __CLASS__ constante magice
T_CLONE clone clase și obiecte
T_CLOSE_TAG ?> sau %> evadarea din HTML
T_COMMENT // sau #, și /* */ comentarii
T_CONCAT_EQUAL .= operatori de atribuire
T_CONST const constante ale claselor
T_CONSTANT_ENCAPSED_STRING "foo" sau 'bar' sintaxa string-urilor
T_CONTINUE continue continue
T_CURLY_OPEN {$ sintaxa interpretată complexă a variabilei
T_DEC -- operatori de incrementare / decrementare
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ constante magice (disponibile începând cu PHP 5.3.0)
T_DIV_EQUAL /= operatori de atribuire
T_DNUMBER 0.12, etc. numere cu virgulă flotantă
T_DOC_COMMENT /** */ comentarii în stil PHPDoc
T_DO do do..while
T_DOLLAR_OPEN_CURLY_BRACES ${ sintaxa variabilelor interpretate complex
T_DOUBLE_ARROW => sintaxa tablourilor
T_DOUBLE_CAST (real), (double) sau (float) type-casting
T_DOUBLE_COLON :: vezi T_PAAMAYIM_NEKUDOTAYIM mai jos
T_ECHO echo echo
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHITESPACE " $a" partea constantă a șirurilor cu variabile
T_ENDDECLARE enddeclare declare, sintaxă alternativă
T_ENDFOR endfor for, sintaxă alternativă
T_ENDFOREACH endforeach foreach, sintaxă alternativă
T_ENDIF endif if, sintaxă alternativă
T_ENDSWITCH endswitch switch, sintaxă alternativă
T_ENDWHILE endwhile while, sintaxă alternativă
T_END_HEREDOC   sintaxă heredoc
T_EVAL eval() eval()
T_EXIT exit sau die exit(), die()
T_EXTENDS extends extends, clase și obiecte
T_FILE __FILE__ constante magice
T_FINAL final Final Keyword
T_FINALLY finally Exceptions (disponibil începând cu PHP 5.5.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function sau cfunction funcții
T_FUNC_C __FUNCTION__ constante magice
T_GLOBAL global circumstanța variabilei
T_GOTO goto (disponibil începând cu PHP 5.3.0)
T_HALT_COMPILER __halt_compiler() __halt_compiler (disponibil începând cu PHP 5.1.0)
T_IF if if
T_IMPLEMENTS implements Object Interfaces
T_INC ++ operatori de incrementare / decrementare
T_INCLUDE include() include
T_INCLUDE_ONCE include_once() include_once
T_INLINE_HTML   text în afara PHP
T_INSTANCEOF instanceof operatori ai tipurilor
T_INSTEADOF insteadof Traits (disponibilă începând cu PHP 5.4.0)
T_INT_CAST (int) sau (integer) type-casting
T_INTERFACE interface Object Interfaces
T_ISSET isset() isset()
T_IS_EQUAL == operatori de comparare
T_IS_GREATER_OR_EQUAL >= operatori de comparare
T_IS_IDENTICAL === operatori de comparare
T_IS_NOT_EQUAL != sau <> operatori de comparare
T_IS_NOT_IDENTICAL !== operatori de comparare
T_IS_SMALLER_OR_EQUAL <= operatori de comparare
T_LINE __LINE__ constante magice
T_LIST list() list()
T_LNUMBER 123, 012, 0x1ac, etc. întregi
T_LOGICAL_AND and operatori logici
T_LOGICAL_OR or operatori logici
T_LOGICAL_XOR xor operatori logici
T_METHOD_C __METHOD__ constante magice
T_MINUS_EQUAL -= operatori de atribuire
T_MOD_EQUAL %= operatori de atribuire
T_MUL_EQUAL *= operatori de atribuire
T_NAMESPACE namespace spațiile de nume (disponibile începând cu PHP 5.3.0)
T_NS_C __NAMESPACE__ spațiile de nume (disponibile începând cu PHP 5.3.0)
T_NS_SEPARATOR \ spațiile de nume (disponibile începând cu PHP 5.3.0)
T_NEW new clase și obiecte
T_NUM_STRING "$a[0]" indice numeric al tabloului în interiorul unui string
T_OBJECT_CAST (object) type-casting
T_OBJECT_OPERATOR -> clase și obiecte
T_OPEN_TAG <?php, <? sau <% evadarea din HTML
T_OPEN_TAG_WITH_ECHO <?= sau <%= evadarea din HTML
T_OR_EQUAL |= operatori de atribuire
T_PAAMAYIM_NEKUDOTAYIM :: ::. De asemenea definit ca T_DOUBLE_COLON.
T_PLUS_EQUAL += operatori de atribuire
T_PRINT print() print
T_PRIVATE private clase și obiecte
T_PUBLIC public clase și obiecte
T_PROTECTED protected clase și obiecte
T_REQUIRE require() require
T_REQUIRE_ONCE require_once() require_once
T_RETURN return întoarcerea valorilor
T_SL << operatori pe biți
T_SL_EQUAL <<= operatori de atribuire
T_SR >> operatori pe biți
T_SR_EQUAL >>= operatori de atribuire
T_START_HEREDOC <<< sintaxa heredoc
T_STATIC static circumstanța variabilei
T_STRING parent, self, etc. identificatori, de ex. cuvinte-cheie ca parent și self, denumiri de funcții, denumiri de clase și altele se potrivesc. A se vedea și T_CONSTANT_ENCAPSED_STRING.
T_STRING_CAST (string) type-casting
T_STRING_VARNAME "${a sintaxa complexă de interpretare a variabilelor
T_SWITCH switch switch
T_THROW throw Exceptions
T_TRAIT trait Traits (disponibilă începând cu PHP 5.4.0)
T_TRAIT_C __TRAIT__ __TRAIT__ (disponibilă începând cu PHP 5.4.0)
T_TRY try Exceptions
T_UNSET unset() unset()
T_UNSET_CAST (unset) type-casting
T_USE use spații de nume (disponibil începând cu PHP 5.3.0; rezervat începând cu PHP 4.0.0)
T_VAR var clase și obiecte
T_VARIABLE $foo variabile
T_WHILE while while, do..while
T_WHITESPACE \t \r\n  
T_XOR_EQUAL ^= operatori de atribuire
T_YIELD yield generators (disponibilă începând cu PHP 5.5.0)

A se vedea și token_name().

add a note add a note

User Contributed Notes 2 notes

up
3
nathan at unfinitydesign dot com
6 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
2
fgm at osinet dot fr
6 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