パーサトークンの一覧

PHP 言語の種々の部分は、内部的に T_SR のように表されています。PHP は、 パーサエラーが発生した際に、これらの ID を "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10." のように出力します。

ここでは、T_SR が何を意味するのかを知っていることを仮定しています。 この対応が分からない方のために、以下にこれらの ID、PHP 構文、マニュアルでの 適当な参照先の一覧を示します。

注意: 定数 T_* の使いかた

以下のトークンは、すべて PHP の定数としても定義されています。その値は、 PHP のベースとなるパーサ基盤に基づいて自動生成されます。 つまり、トークンの具体的な値は、PHP のバージョンが違えば変わる可能性があるということです。 たとえば T_FILE の値は PHP 5.3 では 365 ですが、PHP 5.4 ではこの値は T_TRAIT を表し、T_FILE の値は 369 となります。 つまり、コードの中では決して T_* の実際の値を使ってはいけないということです。 それは PHP X.Y.Z でたまたまその値になっているだけであり、 その値に依存してしまえば PHP のバージョンが変わったときに互換性がなくなってしまいます。 その代わりに、コードでは独自の値 (たとえば 10000 のような大きな値) を使い、PHP のバージョンや T_* の値が変わってもうまく動作するようにしておきましょう。

トークン
トークン 構文 参照先
T_ABSTRACT abstract クラスの抽象化 (PHP 5.0.0 以降で使用可能)
T_AND_EQUAL &= 代入演算子
T_ARRAY 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) or (boolean) 型キャスト
T_BREAK break; break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch 例外(exceptions) (PHP 5.0.0 以降で使用可能)
T_CHARACTER   今では使用されていません
T_CLASS class クラスとオブジェクト
T_CLASS_C __CLASS__ マジック定数
T_CLONE clone クラスとオブジェクト
T_CLOSE_TAG ?> or %> HTML からの脱出
T_COMMENT // or #, and /* */ コメント
T_CONCAT_EQUAL .= 代入演算子
T_CONST const クラス定数
T_CONSTANT_ENCAPSED_STRING "foo" or '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, etc 浮動小数点数
T_DOC_COMMENT /** */ PHPDoc 形式のコメント
T_DO do do..while
T_DOLLAR_OPEN_CURLY_BRACES ${ complex variable parsed syntax
T_DOUBLE_ARROW => array 構文
T_DOUBLE_CAST (real), (double) or (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 or die exit(), die()
T_EXTENDS extends extends, クラスとオブジェクト
T_FILE __FILE__ 定数
T_FINAL final finalキーワード
T_FINALLY finally 例外(exceptions) (PHP 5.5.0 以降で使用可能)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function or 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) or (integer) 型キャスト
T_INTERFACE interface オブジェクト インターフェイス
T_ISSET isset() isset()
T_IS_EQUAL == 比較演算子
T_IS_GREATER_OR_EQUAL >= 比較演算子
T_IS_IDENTICAL === 比較演算子
T_IS_NOT_EQUAL != or <> 比較演算子
T_IS_NOT_IDENTICAL !== 比較演算子
T_IS_SMALLER_OR_EQUAL <= 比較演算子
T_LINE __LINE__ 定数
T_LIST list() list()
T_LNUMBER 123, 012, 0x1ac, etc 整数
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, <? or <% HTML からのエスケープ
T_OPEN_TAG_WITH_ECHO <?= or <%= HTML からのエスケープ
T_OR_EQUAL |= 代入演算子
T_PAAMAYIM_NEKUDOTAYIM :: ::T_DOUBLE_COLON としても定義されています。
T_PLUS_EQUAL += 代入演算子
T_PRINT print() print
T_PRIVATE private クラスとオブジェクト
T_PUBLIC public クラスとオブジェクト
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 など 識別子。たとえば parentself といったオブジェクト指向のキーワード、そして関数名やクラス名などにマッチします。
T_STRING_CAST (string) 型キャスト
T_STRING_VARNAME "${a 複雑な構文
T_SWITCH switch switch
T_THROW throw 例外(exceptions)
T_TRAIT trait トレイト (PHP 5.4.0 以降で使用可能)
T_TRAIT_C __TRAIT__ __TRAIT__ (PHP 5.4.0 以降で使用可能)
T_TRY try 例外(exceptions)
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 以降で使用可能)

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
0
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