0
class Example {
   # Instance member 
   private $member;
   # Class member
   private static $member;
}

これにより、次のエラーが発生します。

再宣言できません Example::$member in ...

クラス メンバーとインスタンス メンバーは異なるスコープに存在するため、このエラーは少し予想外であり、その背後にある動機について疑問に思っています。

ps 同じ制限を持つ他のオブジェクト指向言語はありますか?

4

3 に答える 3

1

理由は簡単です。同じ名前の静的メンバーとインスタンス メンバーはあいまいです。

たとえば、次のように想像してください。

class Example {
   # Instance member 
   private $member;
   # Class member
   private static $member;

   public function AmbiguousCaller() {
       //What should be returned?
       return get_class_vars(get_class($this));
   }
}
于 2013-05-17T13:31:18.463 に答える
1

$this->name()醜いように見えるかもしれませんが、静的関数にもアクセスできます。多分それが一つの理由です。

于 2013-05-17T13:21:24.960 に答える