誰か持っていT_PAAMAYIM_NEKUDOTAYIM
ますか?
u
です。それはあるはずですT_PAAMAYIM_NEKUDOTAYIM
。(PAAMAYIM
= "twice"、NEKUDOTAYIM
= :
= "נקודותיים")
誰か持っていT_PAAMAYIM_NEKUDOTAYIM
ますか?
u
です。それはあるはずですT_PAAMAYIM_NEKUDOTAYIM
。(PAAMAYIM
= "twice"、NEKUDOTAYIM
= :
= "נקודותיים")
回答:
これは二重コロン演算子です::
(パーサートークンのリストを参照)。
var_dump(empty(TRUE))
foreach($cats as cat
後に受け入れ可能な唯一の文字cat
がある::
場合、と呼ばれるクラスの静的プロパティを指定できるためですcat
。場合などは、cat
クラスと呼ばれるパブリック静的メンバを持って$mouse
、その後、foreach($cats as cat::$mouse)
完全に有効ですphp
が、以外との声明::
の後には、cat
構文エラーになります。$mouse
宣言されたプロパティでない場合cat
、致命的なエラーが発生しますが、構文エラーは発生しません。
グーグルは不思議に働く。
「ダブルコロン」のヘブライ語です。
これ::
は、PHP での演算子の名前です。文字通り「ダブルコロン」を意味します。何らかの理由で、彼らはヘブライ語でそれを命名しました。コードの構文を確認し、::
適切な場所に配置してください:-)
ウィキペディアから:
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)
スコープ解決演算子(Paamayim Nekudotayimとも呼ばれます)または簡単に言えば、ダブルコロンは、クラスの静的、定数、およびオーバーライドされたプロパティまたはメソッドへのアクセスを許可するトークンです。
これらの項目をクラス定義の外部から参照する場合は、クラスの名前を使用します。
PHP 5.3.0以降では、変数を使用してクラスを参照することが可能です。変数の値をキーワードにすることはできません(例:自己、親、静的)。
Paamayim Nekudotayimは、最初はダブルコロンの名前を付けるのに奇妙な選択のように見えます。ただし、Zend Engine 0.5(これはPHP 3に対応しています)を作成しているときに、それをZendチームがそれと呼ぶことにしました。それは実際には二重コロンを意味します-ヘブライ語で!
これは、PHPで定数をempty()関数に適用するときにも発生します。
if (!empty(SOME_CONSTANT)) {
}
それは私の場合でした。私はこれを使って解決しました:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
私はヘブライ語をよく知っているので、「Paamayim Nekudotayim」という名前を明確にするために、言い換えると「ダブルコロン」ですが、文字どおりに翻訳されています。
::
「2倍、2つのドット」以上を意味します。スコープ解決演算子として一般に知られています。私にとってこれはクラス関数内で起こりました。
PHP 5.3以降で$this::$defaults
は問題なく動作しました。なんらかの理由でバージョン番号が低いサーバーにコードをスワップすると、このエラーが発生しました。
私の場合、解決策self
は$this
次の代わりにキーワードを使用することでした:
self::$defaults
正常に動作します。
$this
、またはに何が起こったかあなた?