Вот мой код:
<!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 все еще учусь. а также, если есть альтернативный синтаксис для -> этой проводной вещи, то также скажите мне, пожалуйста.
Спасибо
Как привидение упомянуто, у вас нет никаких параметров в конструкторе __construct()
, Поэтому PHP отбрасывает аргументы в пользу жестко закодированных значений, указанных внутри конструктора.
Следующее должно работать:
public function __construct($firstname, $lastname, $age) {
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->age = $age;
}
Нет альтернативного синтаксиса для доступа к члену класса.
Вы должны предоставить параметры своему конструктору:
public function __construct($_f, $_l, $_a) {
$this->firstname = $_f;
$this->lastname = $_a;
$this->age = $_a;
}
Больше в документация.