1

私はOOP PHPの経験がまったくありませんが、ここに私の質問があります.1つのプロパティを持つこのクラスがあるとしましょう:

class myClass {

    public $property = array();

    public function getProperty() {
        return $this->property;
    }

}

クラス自体を変更せずに、またはクラスからオブジェクトをインスタンス化してからそのプロパティを変更することによって、$property の値を変更するにはどうすればよいでしょうか。それを行う他の方法はありますか?スコープ解決を使用していますか?

それが理にかなっていることを願っています。どんな助けでも大歓迎です。

4

2 に答える 2

6

あなたが欲しいのは静的メンバーです

class MyClass {
   public static $MyStaticMember = 0;

   public function echoStaticMember() {
      echo MyClass::$MyStaticMember;
      //note you can use self instead of the class name when inside the class
      echo self::$MyStaticMember;
   }

   public function incrementStaticMember() {
      self::$MyStaticMember++;
   }
}

次に、次のようにアクセスします

MyClass::$MyStaticMember = "Some value"; //Note you use the $ with the variable name

これで、静的メンバーが設定されているものに関係なく、すべてのインスタンスとすべてが同じ値を参照するようになるため、たとえば次のようにします。

function SomeMethodInAFarFarAwayScript() {
   echo MyClass::$MyStaticMember;
} 

...

MyClass::$MyStaticMember++; //$MyStaticMember now is: 1

$firstClassInstance = new MyClass();

echo MyClass::$MyStaticMember; //will echo: 1
$firstClassInstance->echoStaticMember(); //will echo: 1

$secondInstance = new MyClass();
$secondInstance->incrementStaticMember(); // $MyStaticMember will now be: 2

echo MyClass::$MyStaticMember; //will echo: 2
$firstClassInstance->echoStaticMember(); //will echo: 2
$secondInstance->echoStaticMember(); //will echo: 2

SomeMethodInAFarFarAwayScript(); //will echo: 2

PHPフィドル

于 2013-10-06T02:48:39.560 に答える