2011-03-16 8 views
0

次のbar()メソッドを "blue"に戻すことはできますか?PHPクラス変数再割り当て

class TestClass 
{ 
    public $var1 = "red"; 

    public function foo() //returns red 
     { 
      return $this->var1; 
     } 

    public function bar() //still returns red 
     { 
      $this->var1 = "blue"; 

      return $this->var1; 
     } 
} 

は、私は、そのクラスのプロパティは、完全に動的な性質に向けているようだが、私は__setと__getを使用して過負荷を読んなどの変数、ほかの結果、することはできません知っています。

+8

[返信する](http://ideone.com/t2Tla)? –

+0

PHP 3.5.3で、 '$ t = new TestClass;を実行すると、上記の" blue "が返されます。 echo $ t-> bar(); '。どのように 'bar()'を呼びますか? '$ var1'は静的ではないので、クラスプロパティではなくインスタンスプロパティです。 –

+1

私はあなたが5.3.3を意味すると思いますか?または、PHPの古いバージョンを気に入っているDavid =) – PatrikAkerstrand

答えて

3

あなたのコードは現在、あなたがそれを記述するときに機能します。 PHPのインタラクティブシェルから:

php > $t = new TestClass(); 
php > echo $t->foo(); 
red 
php > echo $t->bar(); 
blue 
php > echo $t->foo(); 
blue 

多分あなたの問題を別の方法で説明できますか?

+0

私のために同じ、完璧に正常に動作し、私は理由がない理由を参照してください –

+0

返信いただきありがとうございます。私はそれを働かせた。それはすべてのタイプミスでした。 – anthony

0

bar()メソッドをset barとしてオプションのパラメータで更新できます。

パブリックファンクションバー($ mycolor = 'red') { $ this-> var1 = $ mycolor; return $ this-> var1; }

関連する問題