2011-03-16 149 views
0

是否有可能使下面的bar()方法返回「藍色」?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; echo $ t-> bar();'。你怎麼叫'bar()'?由於'$ var1'是非靜態的,它是一個實例屬性而不是類屬性。 –

+1

我認爲你的意思是5.3.3?或者你有一個helluva舊版本的PHP大衛=) – 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()方法作爲設置欄。

公共功能欄($ mycolor ='red') { $ this-> var1 = $ mycolor; return $ this-> var1; }