Karponter
@Karponter

Как правильно использовать методы и атрибуты классов PHP?

Начал изучать ООП в ракурсе PHP и споткнулся на первых же шагах. В чем я собственно не прав в данном примере?
<?php
	class ClassName
	{
		var $myTestVar = 0;

		function readVar() {
			echo $this->$myTestVar;
		}
	}

	$a = new ClassName();
	$a->readVar();
?>

Валидатор говорит :
PHP Notice: Undefined variable: myTestVar in ~/.../test.php on line 13
PHP Fatal error: Cannot access empty property in ~/.../test.php on line 13

Проблема в коде или с валидатором?

update...
<?php
	class ClassName
	{
		public $myTestVar;

		public function __construct() 
		{
			$this->myTestVar  = 0;
		}

		function readVar() {
			echo $this->$myTestVar;
		}
	}

	$a = new ClassName();
	$a->readVar();
?>

Исход тот-же.
  • Вопрос задан
  • 3084 просмотра
Решения вопроса 1
@vdem
Лишняя $, вместо:
echo $this->$myTestVar;
надо
echo $this->myTestVar;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
deadbyelpy
@deadbyelpy
веб-шмеб
Начали изучать ООП модель, не пишите поля класса в старом стиле
var $myTestVar = 0;
пишите как надо
public|private|protected $myTestVar;
или же сделайте статическое поле, если надо.

вот это же - var $myTestVar = 0; уже делает ее статической, поэтому $this->myTestVar пустует
Если есть желание указывать значения по умолчанию, пишите в конструкторе
public function __construct() 
{
    $this->myTestVar  = 0;
}
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Потрудитесь для начала почитать документацию. И именно документацию а не статьи васи пупкина. Там даже на русском переведено (то что про ООП), и там очень даже неплохо раскрыты основы. Так же советую подключить википедию и почитать про "инкапсуляцию".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы