0

codepad.org で次のコードを試しました。

class test { 
  const TEST = 'testing 123';
  function test () {
    $testing = 'TEST';
    echo self::$testing;
  }
} 
$class = new test;

そして、それは次のように返されました:

1
2 Fatal error: Access to undeclared static property:  test::$testing on line 6

コードパッドが 5.2.5 を使用しているのに対し、変数を使用してクラス定数を参照することが自宅のサーバーで php 5.2.9 を実行している場合に機能するかどうかを知りたいです。PHP の各バージョンでのクラス変数の変更点は何ですか?

4

1 に答える 1

3

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

関数 test ($testing) で定義する変数は静的でも定数でもないため、スコープ解決演算子は適用されません。

class test { 
  const TEST = 'testing 123';
  function test () {
    $testing = 'TEST';
    echo $testing;
  }
} 

$class = new test;

または、クラス外の定数にアクセスするだけです。

test::TEST;

正しく使用すれば、自宅のサーバーで動作するはずです。PHP4 から PHP5 への OOP の変更に関しては、php のドキュメントが役立つ場合があります。頭の片隅ではありますが、クラス変数に関連する PHP5 の主な変更点は、可視性、静的変数、および定数であると言えます。これらはすべて、提供されているドキュメント リンクで説明されています。

于 2009-02-12T01:55:21.743 に答える