class A {
protected $bar = 'bar';
public function foo() {
echo $this->$bar;
}
}
$a = new A();
$a->foo();
이것이 작동하지 않는다는 것을 알아 채고 있습니다. 나는 C++과 C#에서 왔습니다. 그래서 PHP에 대해 이해할 수없는 것 같습니다.왜이 간단한 코드가 '정의되지 않은 변수 : bar'입니까?
class A {
protected $bar = 'bar';
public function foo() {
echo $this->$bar;
}
}
$a = new A();
$a->foo();
이것이 작동하지 않는다는 것을 알아 채고 있습니다. 나는 C++과 C#에서 왔습니다. 그래서 PHP에 대해 이해할 수없는 것 같습니다.왜이 간단한 코드가 '정의되지 않은 변수 : bar'입니까?
회원에게 접속하면 this
앞에 달러 기호 만 필요합니다. 대신이 같은 즉 액세스를 :
echo $this->bar;
않는 이유는이 간단한 코드 수율 '정의되지 않은 변수 : 바'
PHP는 $this->
을 평가하기 전에 변수 $bar
을 평가하려고하기 때문에. $bar
변수가 없으므로 알림을 표시합니다.
$bar
앞에 $
을 제거
echo $this->bar;
내가 OOP Basics뿐만 아니라 문서의 Variable Variables 섹션을 읽어 보시기 바랍니다 것이다.
나는 동적 언어가 왜 특정 순서를 암시하는지 궁금하다. 평가? –
특정 평가 순서를 의미하지는 않으며 변수 변수가 더 많습니다. 당신이 C++에서 온 것을 언급 한 이후로 언급했습니다. PHP보다 훨씬 정적입니다. 그럼에도 불구하고, 나는 나의 대답을 조정했다. –
노력이
public function(){
echo $this->bar;
}
사용이 다음 변수 $this->$variable
하지만 $this->variable;
변경하기 전에 기호
$
를 사용 couln't $는'$이 에코 -> $ bar;'to'echo $ this-> bar; – asprinhttp://php.net/manual/en/language.oop5.basic.php – kunal