Почему объект "студент" не переводится на следующий курс, если добавить условие проверки?
Уже мозг сломал, пытаясь найти ошибку, начал изучать классы и методы, задание вроде как элементарное, написать метод, переводящий объект "студент" на следующий курс.
Пока надо было просто перевести его, всё работало, но когда я добавил проверку на то, что курс на который я его перевожу не больше 5, всё сломалось и я не могу понять в чём проблема, уже раз 100 перечитал код.
<?php
class Student
{
private $name;
private $course;
public function __construct($name)
{
$this->name = $name;
$this->course = 1;
}
public function getName()
{
return $this->name;
}
public function getCourse()
{
return $this->course;
}
// public function transferToNextCourse()
// {
// $this->course++;
// }
public function checkCourse($course)
{
if ($course <= 5) {
return true;
} else {
return false;
}
}
public function transferToNextCourse()
{
$newCourse = $this->course++;
if($this->checkCourse($newCourse)) {
$this->course = $newCourse;
}
}
}
При проверке работы кода, курс студента до и после перевода остаётся равен 1
<?php
require_once 'Student.php';
$student16 = new Student('Andrew');
echo $student16->getCourse();
$student16->transferToNextCourse();
echo '<br>';
echo $student16->getCourse();
Дополнение: Написал + 1
вместо ++
и всё магическим образом заработало, только не понятно почему так.
Источник: Stack Overflow на русском