2012-02-27 6 views
1

私はそれは私に次のエラーを与えるstatic::some_method();ことで、私の静的メソッドを呼び出します。PHPで静的メソッドを呼び出す正しい方法は何ですか?

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting T_VARIABLE in /some/path/SomeClass.class.php on line 15 

私はクラス名で静的交換した場合、それは当然のことながら動作しますが、使用しなくても静的メソッドをコールする正しい方法は何ですかクラス名?

+2

クラス名を使用する必要があります。 AFAIKの周りに他の方法はありません。 – Bojangles

+1

それは意味がありません、どのようにPHPはあなたが意味するクラスのメソッドを知ることができますか? 「通常の」グローバル関数を意味しますか?次に、クラス内で関数を宣言することはできません。 – AndreKR

+0

あなたのコードをもう一度チェックしてください。特に、文字列の場合は、makeに構文エラーがないことを確認してください。適切なエスケープシーケンスを使用してください。 "\" –

答えて

8

あなたは、クラスのコンテキスト内であれば

self::method(); 
static::method(); 

...は異なる動作の両方の仕事は、late static bindingに関連します。

あなたはクラスのコンテキストでない場合、あなたはメソッドが属するクラス名を使用する必要があります。

SomeClass::method(); 

そうでなければあなたは「ダブルを意味する間抜けヘブライエラー、T_PAAMAYIM_NEKUDOTAYIMを取得しますコロン "を英語で入力してください。

+0

wirdの部分は、クラス内で呼び出すのですが、通常は動作しますが、ホスティングを変更するとこのエラーが発生します。私はPHP 5.2.17を使用している問題は? – Mark

+1

あなたのリンクからドキュメントを読んでいて、それは5.3から始まります.3分以内にこれを答えとして受け入れるでしょう。 – Mark

2

使用

ClassName::some_method() 

あなたは

selfは別のメソッド内のキーワード(すなわちある
self::some_method() 

を使用するクラス、1の内側にある場合、静的メソッドを呼び出す(staticキーワードを使用していない)、またはします)。

+0

私はそれをクラス内部で使っています。しかし、selfキーワードは別のクラスによって上書きされたときに古いメソッドを呼び出します。だから私は静的とget_called_classを使って、私が何を意味するか知っていれば、最新のクラスを取得します。 – Mark

+0

ああ、私は見たことがありません> => PHP 5.3の 'static ::'キーワードはそのコンテキストで(二重コロンで)使用します。知っておくといい。 – Xaerxess

関連する問題