Почему эти магические методы не работают?

Результат выполнения этого кода приведен ниже. Может ли кто-нибудь объяснить, почему имя не передано должным образом, и в нем будет указано «Icefeet — это годы». Я что-то здесь упустил?

лет

<?phpclass Penguin  {

public function __construct($name) {
$this->species = 'Penguin';
$this->name = $name;
}

public function __toString() {
return $this->name . " (" . $this->species . ")\n";
}

public function getPenguinFromDb($id) {
// elegant and robust database code goes here
}

public function __get($field) {
if($field == 'name') {
return $this->username;
}
}

public function __set($field, $value) {
if($field == 'name') {
$this->username = $value;
}
}

public function __call($method, $args) {
echo "unknown method " . $method;
return false;
}
}$tux = new Penguin('Icyfeet');
echo $tux->created;
echo $tux->name . " is " . $tux->age . " years old\n";?>

-3

Решение

Я думаю, что вы пытаетесь получить доступ к имени пользователя, а не имени.

 public function __get($field) {
if($field == 'name') {
return $this->name;
}
}

Ну, перед этим, пожалуйста, объявите все поля для класса, как:

личное $ name = »;
частный вид = пингвин;

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]