2013-11-15 4 views
-1
class A { 
    protected $bar = 'bar'; 
    public function foo() { 
     echo $this->$bar; 
    } 
} 

$a = new A(); 
$a->foo(); 

이것이 작동하지 않는다는 것을 알아 채고 있습니다. 나는 C++과 C#에서 왔습니다. 그래서 PHP에 대해 이해할 수없는 것 같습니다.왜이 간단한 코드가 '정의되지 않은 변수 : bar'입니까?

+0

변경하기 전에 기호 $를 사용 couln't $는'$이 에코 -> $ bar;'to'echo $ this-> bar; – asprin

+0

http://php.net/manual/en/language.oop5.basic.php – kunal

답변

2

회원에게 접속하면 this 앞에 달러 기호 만 필요합니다. 대신이 같은 즉 액세스를 :

echo $this->bar; 
6

않는 이유는이 간단한 코드 수율 '정의되지 않은 변수 : 바'

PHP는 $this->을 평가하기 전에 변수 $bar을 평가하려고하기 때문에. $bar 변수가 없으므로 알림을 표시합니다.

$bar 앞에 $을 제거

echo $this->bar; 

내가 OOP Basics뿐만 아니라 문서의 Variable Variables 섹션을 읽어 보시기 바랍니다 것이다.

+0

나는 동적 언어가 왜 특정 순서를 암시하는지 궁금하다. 평가? –

+1

특정 평가 순서를 의미하지는 않으며 변수 변수가 더 많습니다. 당신이 C++에서 온 것을 언급 한 이후로 언급했습니다. PHP보다 훨씬 정적입니다. 그럼에도 불구하고, 나는 나의 대답을 조정했다. –

0

노력이

public function(){ 
    echo $this->bar; 
} 

사용이 다음 변수 $this->$variable 하지만 $this->variable;