АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗ppOpBsCIPV 12 of 107 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

Начальные значения свойств в конструкторе

Пусть у нас есть какой-то класс с двумя свойствами:

<?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.