Не удается отобразить вновь присвоенное значение переменной класса в переполнении стека

Вот мой код:

<!DOCTYPE html>
<html>
<head>
<title>Reconstructing the Person Class</title>
<link type='text/css' rel='stylesheet' href='style.css'/>
</head>
<body>
<p>
<?php
class Person {
public $isAlive = true;
public $firstname;
public $lastname;
public $age;

public function __construct() {
$this->firstname = "Umair";
$this->lastname = "Dongle";
$this->age = 23;
}
}
$teacher = new Person("Matt","Zinger",34);
$student = new Person("Hassan", "Naseer", 90);
echo $teacher->age;
?>
</p>
</body>
</html>

Этот результат должен быть 34, но я получаю 23. Может кто-нибудь объяснить это, так как я новичок в PHP все еще учусь. а также, если есть альтернативный синтаксис для -> этой проводной вещи, то также скажите мне, пожалуйста.
Спасибо

0

Решение

Как привидение упомянуто, у вас нет никаких параметров в конструкторе __construct(), Поэтому PHP отбрасывает аргументы в пользу жестко закодированных значений, указанных внутри конструктора.

Следующее должно работать:

public function __construct($firstname, $lastname, $age) {
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->age = $age;
}

Нет альтернативного синтаксиса для доступа к члену класса.

0

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

Вы должны предоставить параметры своему конструктору:

public function __construct($_f, $_l, $_a) {
$this->firstname = $_f;
$this->lastname = $_a;
$this->age = $_a;
}

Больше в документация.

1