web-dev-qa-db-ja.com

PHPにはT_PAAMAYIM_NEKUDOTAYIMが必要ですか?

誰かT_PAAMAYIM_NEKUDOTAYIMがありますか?

499
Peter Turner

これはダブルコロン演算子 :: です( パーサートークンのリスト を参照).

322
Gumbo

Googleは驚異的に働いています。

これは ヘブライ語 "ダブルコロン"の場合です。

99
patricksweeney

これはPHPの::演算子の名前です。それは文字通り「二重コロン」を意味します。どういうわけか彼らはヘブライ語でそれを命名した。コードの構文を確認し、必要に応じて::を付けてください:-)

52
Ilya Birman

From Wikipedia

PHPでは、スコープ解決演算子はPaamayim Nekudotayim(ヘブライ語:פעמייםנקודתיים)とも呼ばれ、ヘブライ語で「二重コロン」を意味します。

「Paamayim Nekudotayim」という名前は、イスラエルで開発されたPHP 3で使用されるZend Engine 0.5で導入されました。ヘブライ語を話さない多くの開発者を混乱させていますが、PHP 5、このサンプルエラーメッセージのように:

$ php -r ::解析エラー:構文エラー、予期しないT_PAAMAYIM_NEKUDOTAYIM

PHP 5.4の時点では、スコープ解決演算子に関するエラーメッセージにはまだこの名前が含まれていますが、その意味は多少明確になっています。

$ php -r ::解析エラー:構文エラー、予期しない '::'(T_PAAMAYIM_NEKUDOTAYIM)

公式のPHPドキュメント から:

スコープ解決演算子(Paamayim Nekudotayimとも呼ばれます)または簡単に言えば、二重コロンは、静的、定数、およびオーバーライドされたクラスのプロパティまたはメソッドへのアクセスを許可するトークンです。

クラス定義の外部からこれらの項目を参照するときは、クラスの名前を使用します。

PHP 5.3.0の時点では、変数を使用してクラスを参照できます。変数の値をキーワードにすることはできません(例:self、parent、static)。

Paamayim Nekudotayimは、最初は、ダブルコロンに名前を付けるための奇妙な選択のように思われます。ただし、Zend Engine 0.5(PHP 3を強化)の記述中に、ZendチームはそれをZend Engine 0.5と呼びました。実際にはダブルコロンを意味します-ヘブライ語で!

45
John Slegers

これは、PHPの定数をempty()関数に適用したときにも発生します。

if (!empty(SOME_CONSTANT)) {

}

それは私の場合でした。私はこれを使ってそれを解決しました:

$string = SOME_CONSTANT;
if (!empty($string)) {

}
10
Max

私にとっては、これはクラス関数内で起こりました。

PHP 5.3以降では$this::$defaultsはうまくいきました。何らかの理由でバージョン番号が小さいためにコードをサーバーに入れ替えたときに、このエラーがスローされました。

私の場合、解決策は$thisの代わりにキーワードselfを使用することでした。

self::$defaultsは問題なく動作します。

2
bozdoz

これはforeachで次のものを使うときに起こる可能性があります。

foreach( $array as $key = $value )

の代わりに

foreach( $array as $key => $value )
0
GDY

これが私のやり方です。私は二重引用符で表現の限界を試していました。だからこれはコードです:

コード

$a = 5;

echo "{$a == 5 ? 'yes' : 'no'} its possible";

出力

  PHP Parse error:  syntax error, unexpected '==' (T_IS_EQUAL), expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in php Shell code on line 1
0
peter