Меня немного смущает PHP. В приведенном ниже примере единственным приемлемым способом является инициализация bVar в конструкторе. Всегда ли мне нужно это делать, если я хочу использовать свойства класса внутри самого класса? Или мой синтаксис просто плох для этой цели при доступе к свойствам класса внутри самого класса?
class test{
protected aVar = "varValue";
protected bVar;
function __construct(){
$this->bVar = "varValue";
}
function testerFunc(){
echo $aVar //undefined variable
echo $this->$aVar //undefined variable
echo $bvar //works fine
}
}
У вас есть опечатка, когда вы пытаетесь повторить $aVar. Должно быть echo $this->aVar; Удалите знак доллара перед именем переменной.
Переменные в PHP представлены знаком доллара, за которым следует имя переменной!
Как говорит RainDev, вам также нужен знак доллара, когда вы объявляете переменную в первую очередь: protected $aVar = "varValue";
Кроме того, во всех ваших эхо-операторах отсутствуют точки с запятой.






Ваш синтаксис немного беспорядок:
class test {
protected $aVar = "varValue";
protected $bVar;
function __construct() {
$this->bVar = "varValue";
}
function testerFunc() {
echo $aVar; //undefined variable
echo $this->aVar; // varValue (works fine)
echo $this->bVar; // varValue (works fine)
echo $bvar; //undefined variable
}
}
Я не могу представить, что
echo $bvarработает. Если вы хотите получить доступ к этой переменной, вы должны вызвать ее так:$this->bVar