2011-03-16 7 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

[return blue] (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() 메서드를 설정 막대로 선택적 매개 변수로 업데이트 할 수 있습니다.

공용 기능 막대 ($ mycolor = 'red') { $ this-> var1 = $ mycolor; return $ this-> var1; }