ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppOpIhOPM 28 of 107 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Переопределение методов родителя в ООП в PHP

Класс-потомок может переопределить метод родителя, создав метод с таким же именем. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } ?>

Давайте в классе-потомке создадим одноименный метод:

<?php class Student extends User { public function setName($name) { } } ?>

Как правило, переопределение методов родителя нужно для того, чтобы изменить или дополнить поведение этого метода. Давайте в нашем случае добавим проверку длины имени:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'student name error'; } } } ?>

Давайте убедимся в том, что вызывается именно переопределенный метод. Для начала создадим объект класса потомка:

<?php $student = new Student; ?>

Теперь вызовем наш метод, передав в него корректное значение:

<?php $student->setName('john'); ?>

А теперь вызовем метод, передав в него некорректное значение. В результате увидим выброшенное исключение:

<?php $student->setName(''); // ошибка ?>

В классе User сделайте геттер и сеттер возраста.

В классе Employee переопределите сеттер возраста и сделайте в нем проверку на то, что возраст от 18 до 65 лет.

byenru