Начальные значения свойств в конструкторе
Пусть у нас есть какой-то класс с двумя свойствами:
<?php
class Test
{
public $prop1;
public $prop2;
}
?>
Давайте сделаем так, чтобы при создании объекта класса эти свойства имели какие-либо значения. Как вы уже знаете, в момент создания объекта вызывается метод-конструктор. Зададим начальные значения свойства в этом методе:
<?php
class Test
{
public $prop1;
public $prop2;
public function __construct()
{
$this->prop1 = 'value1'; // начальное значение свойства
$this->prop2 = 'value2'; // начальное значение свойства
}
}
$test = new Test;
echo $test->prop1; // выведет 'value1'
echo $test->prop2; // выведет 'value2'
?>
Применение
Пусть у нас есть класс Student
с двумя
свойствами - name
и course
(курс студента). Сделаем так, чтобы
имя студента приходило параметром при создании
объекта, а курс автоматически принимал значение
1
:
<?php
class Student
{
private $name;
private $course;
public function __construct($name)
{
$this->name = $name;
$this->course = 1; // курс изначально равен 1
}
}
?>
Сделаем геттеры для наших свойств:
<?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;
}
}
?>
Пусть имя созданного студента будет неизменяемым и доступным только для чтения, а вот для курса мы сделаем метод, который будет переводить нашего студента на следующий курс:
<?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++;
}
}
?>
Проверим работу нашего класса:
<?php
$student = new Student('john'); // создаем объект класса
echo $student->getCourse(); // выведет 1 - начальное значение
$student->transferToNextCourse(); // переведем студента на следующий курс
echo $student->getCourse(); // выведет 2
?>
Не подсматривая в мой код реализуйте такой
же класс Student
.
Модифицируйте метод transferToNextCourse
так, чтобы при переводе на новый курс выполнялась
проверка того, что новый курс не будет больше
5
.