Я изучаю PHP и пытаюсь создать базовый класс с несколькими свойствами protected
. Я могу установить их с помощью «волшебного» сеттера, однако не могу напечатать свойство name
. Я читал, и это кажется базовым, но по какой-то нечетной причине вывод - это «имя», а не фактическая строка, которую я передаю. Код выглядит следующим образом:PHP не может получить свойство класса
class Animal{
protected $name;
protected $color;
protected $type;
public function __set($attr, $value){
switch ($attr){
case "name":
$this->name = $attr;
break;
case "color":
$this->color = $attr;
break;
case "type":
$this->type = $attr;
break;
default:
echo "attr not found in class";
}
printf ("set %s to %s <br>", $attr, $value);
}
public function __get($attr){
if(property_exists($this, $attr)){
return $this->$attr;
}
}
public function run(){
echo $this->name ." runs! <br>";
}
public function getName(){
return $this->name."<br>";
}
}
$animal1 = new Animal();
$animal1->name = "Animal_1";
$animal1->color = "black";
$animal1->type = "common";
echo $animal1->getName();
echo $animal1->run();
echo $animal1->name;
Это выход:
set name to Animal_1
set color to black
set type to common
name
name runs!
name
Почему я не могу получить name
свойство класса и вместо того, чтобы просто получить имя самого свойства?
Спасибо. Я не могу поверить, что я не заметил эту ошибку. – undroid