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)
;
Lista de componentes léxicos del analizador
Algunas partes del lenguaje PHP son representadas internamente por tipos como T_SR. PHP produce identificadores como este a la hora de analizar errores, como "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." ("Error de análisis: T_SR inesperado, se esperaba ',' o ';' en script.php en la línea 10.")
Se supone que debería de saberse qué significa T_SR. Para todo aquél que no lo sepa, se muestra una tabla con esos identificadores, la sintaxis de PHP y referencias al apartado apropiado del manual.
Nota: Uso de las constantes T_*
Todos los componentes léxicos (o tokens) listados abajo también están definidos como constantes de PHP. Sus valores son automáticamente generados basándose en la infraestructura del analizador subyacente de PHP. Esto significa que el valor concreto de un componenete léxico puede cambiar entre dos versiones de PHP. Por ejemplo, la constante
T_FILEes 365 en PHP 5.3, mientras que el mismo valor se refiere ahora aT_TRAITen PHP 5.4, y el valor deT_FILEes 369. Esto sigifica que el código no debería nunca depender directamente de los valores originales de las constantes T_* tomadas de la versión X.Y.Z de PHP, para proporcionar cierta compatibildad entre múltiples versiones PHP. En su lugar, el código debería utilizar valores personalizados (usando números grandes como 10000) y una estrategia apropiada que funcione tanto con las versiones de PHP como con los valores de las constantes T_*.
| Elemento | Sintaxis | Referencia |
|---|---|---|
T_ABSTRACT |
abstract | Abstracción de clases (disponible desde PHP 5.0.0) |
T_AND_EQUAL |
&= | operadores de asignación |
T_ARRAY |
array() | array(), sintaxis de array |
T_ARRAY_CAST |
(array) | conversión de tipos |
T_AS |
as | foreach |
T_BAD_CHARACTER |
todo lo que haya por debajo de ASCII 32 excepto \t (0x09), \n (0x0a) y \r (0x0d) | |
T_BOOLEAN_AND |
&& | operadores lógios |
T_BOOLEAN_OR |
|| | operadores lógicos |
T_BOOL_CAST |
(bool) o (boolean) | conversión de tipos |
T_BREAK |
break | break |
T_CALLABLE |
callable | callable |
T_CASE |
case | switch |
T_CATCH |
catch | Excepciones (disponible desde PHP 5.0.0) |
T_CHARACTER |
ya no se utiliza | |
T_CLASS |
class | clases y objetos |
T_CLASS_C |
__CLASS__ | constantes mágicas (disponible desde PHP 4.3.0) |
T_CLONE |
clone | clases y objetos (disponible desde PHP 5.0.0) |
T_CLOSE_TAG |
?> o %> | salir de HTML |
T_COMMENT |
// o #, y /* */ en PHP 5 | comentarios |
T_CONCAT_EQUAL |
.= | operadores de asignación |
T_CONST |
const | constantes |
T_CONSTANT_ENCAPSED_STRING |
"foo" o 'bar' | sintaxis de string |
T_CONTINUE |
continue | continue |
T_CURLY_OPEN |
{$ | sintaxis compleja |
T_DEC |
-- | operadores de incremento/decremento |
T_DECLARE |
declare | declare |
T_DEFAULT |
default | switch |
T_DIR |
__DIR__ | constantes mágicas (disponible desde PHP 5.3.0) |
T_DIV_EQUAL |
/= | operadores de asignación |
T_DNUMBER |
0.12, etc | números de punto flotante |
T_DOC_COMMENT |
/** */ | comentarios tipo PHPDoc (disponible desde PHP 5.0.0) |
T_DO |
do | do..while |
T_DOLLAR_OPEN_CURLY_BRACES |
${ | sintaxis compleja |
T_DOUBLE_ARROW |
=> | sintaxis de array |
T_DOUBLE_CAST |
(real), (double) o (float) | conversión de tipos |
T_DOUBLE_COLON |
:: | véase T_PAAMAYIM_NEKUDOTAYIM más abajo |
T_ECHO |
echo | echo |
T_ELSE |
else | else |
T_ELSEIF |
elseif | elseif |
T_EMPTY |
empty | empty() |
T_ENCAPSED_AND_WHITESPACE |
" $a" | parte constante de un string con variables |
T_ENDDECLARE |
enddeclare | declare, sintaxis alternativa |
T_ENDFOR |
endfor | for, sintaxis alternativa |
T_ENDFOREACH |
endforeach | foreach, sintaxis alternativa |
T_ENDIF |
endif | if, sintaxis alternativa |
T_ENDSWITCH |
endswitch | switch, sintaxis alternativa |
T_ENDWHILE |
endwhile | while, sintaxis alternativa |
T_END_HEREDOC |
sintaxis de heredoc | |
T_EVAL |
eval() | eval() |
T_EXIT |
exit o die | exit(), die() |
T_EXTENDS |
extends | extends, clases y objetos |
T_FILE |
__FILE__ | constantes mágicas |
T_FINAL |
final | Palabra clave Final (disponible desde PHP 5.0.0) |
T_FOR |
for | for |
T_FOREACH |
foreach | foreach |
T_FUNCTION |
function o cfunction | funciones |
T_FUNC_C |
__FUNCTION__ | constantes mágicas (disponible desde PHP 4.3.0) |
T_GLOBAL |
global | ámbito de las variables |
T_GOTO |
goto | (disponible desde PHP 5.3.0) |
T_HALT_COMPILER |
__halt_compiler() | __halt_compiler (disponible desde PHP 5.1.0) |
T_IF |
if | if |
T_IMPLEMENTS |
implements | Interfaces de objetos (disponible desde PHP 5.0.0) |
T_INC |
++ | operadores de incremento/decremento |
T_INCLUDE |
include() | include |
T_INCLUDE_ONCE |
include_once() | include_once |
T_INLINE_HTML |
texto fuera de PHP | |
T_INSTANCEOF |
instanceof | operadores de tipo (disponible desde PHP 5.0.0) |
T_INSTEADOF |
insteadof | Traits (disponible desde PHP 5.4.0) |
T_INT_CAST |
(int) o (integer) | conversión de tipos |
T_INTERFACE |
interface | Interfaces de objetos (disponible desde PHP 5.0.0) |
T_ISSET |
isset() | isset() |
T_IS_EQUAL |
== | operadores de comparación |
T_IS_GREATER_OR_EQUAL |
>= | operadores de comparación |
T_IS_IDENTICAL |
=== | operadores de comparación |
T_IS_NOT_EQUAL |
!= o <> | operadores de comparación |
T_IS_NOT_IDENTICAL |
!== | operadores de comparación |
T_IS_SMALLER_OR_EQUAL |
<= | operadores de comparación |
T_LINE |
__LINE__ | constantes mágicas |
T_LIST |
list() | list() |
T_LNUMBER |
123, 012, 0x1ac, etc. | números enteros |
T_LOGICAL_AND |
and | operadores lógicos |
T_LOGICAL_OR |
or | operadores lógicos |
T_LOGICAL_XOR |
xor | operadores lógicos |
T_METHOD_C |
__METHOD__ | constantes mágicas (disponible desde PHP 5.0.0) |
T_MINUS_EQUAL |
-= | operadores de asignación |
T_ML_COMMENT |
/* y */ | comentarios (sólo en PHP 4) |
T_MOD_EQUAL |
%= | operadores de asignación |
T_MUL_EQUAL |
*= | operadores de asignación |
T_NAMESPACE |
namespace | espacios de nombres (disponible desde PHP 5.3.0) |
T_NS_C |
__NAMESPACE__ | espacios de nombres (disponible desde PHP 5.3.0) |
T_NS_SEPARATOR |
\ | espacios de nombres (disponible desde PHP 5.3.0) |
T_NEW |
new | clases y objectos |
T_NUM_STRING |
"$a[0]" | array de índice numérico dentro de un string |
T_OBJECT_CAST |
(object) | conversión de tipos |
T_OBJECT_OPERATOR |
-> | clases y objetos |
T_OLD_FUNCTION |
old_function | (Sólo en PHP 4) |
T_OPEN_TAG |
<?php, <? o <% | salir de HTML |
T_OPEN_TAG_WITH_ECHO |
<?= o <%= | salir de HTML |
T_OR_EQUAL |
|= | operadores de asignación |
T_PAAMAYIM_NEKUDOTAYIM |
:: | ::. También se define como
T_DOUBLE_COLON. |
T_PLUS_EQUAL |
+= | operadores de asignación |
T_PRINT |
print() | |
T_PRIVATE |
private | clases y objetos (disponible desde PHP 5.0.0) |
T_PUBLIC |
public | clases y objetos (disponible desde PHP 5.0.0) |
T_PROTECTED |
protected | clases y objetos (disponible desde PHP 5.0.0) |
T_REQUIRE |
require() | require |
T_REQUIRE_ONCE |
require_once() | require_once |
T_RETURN |
return | valores de retorno |
T_SL |
<< | operadores a nivel de bits |
T_SL_EQUAL |
<<= | operadores de asignación |
T_SR |
>> | operadores a nivel de bits |
T_SR_EQUAL |
>>= | operadores de asignación |
T_START_HEREDOC |
<<< | sintaxis de heredoc |
T_STATIC |
static | ámbito de las variables |
T_STRING |
parent, true etc. | se comparan identificadores, p.ej. strings, palabras clave orientadas a objetos como parent o self, funciones, clases y más. |
T_STRING_CAST |
(string) | conversión de tipos |
T_STRING_VARNAME |
"${a | sintaxis compleja |
T_SWITCH |
switch | switch |
T_THROW |
throw | Excepciones (disponible desde PHP 5.0.0) |
T_TRAIT |
trait | Traits (disponible desde PHP 5.4.0) |
T_TRAIT_C |
__TRAIT__ | __TRAIT__ (disponible desde PHP 5.4.0) |
T_TRY |
try | Excepciones (disponible desde PHP 5.0.0) |
T_UNSET |
unset() | unset() |
T_UNSET_CAST |
(unset) | conversión de tipos (disponible desde PHP 5.0.0) |
T_USE |
use | espacios de nombres (disponible desde PHP 5.3.0; reservada desde PHP 4.0.0) |
T_VAR |
var | clases y objetos |
T_VARIABLE |
$foo | variables |
T_WHILE |
while | while, do..while |
T_WHITESPACE |
\t \r\n | |
T_XOR_EQUAL |
^= | operadores de asignación |
Véase también token_name().
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.
