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

Оператор instanceof и наследование в ООП в PHP

Давайте разберем особенности наследования при использовании оператора instanceof. Пусть у нас есть родительский класс и дочерний:

<?php // Родительский класс: class ParentClass { } // Дочерний класс: class ChildClass extends ParentClass { } ?>

Создадим объект дочернего класса:

<?php $obj = new ChildClass; ?>

Проверим теперь с помощью instanceof, принадлежит ли наш объект классу ParentClass и классу ChildClass:

<?php var_dump($obj instanceof ChildClass); // выведет true var_dump($obj instanceof ParentClass); // тоже выведет true ?>

Как вы видите из примера - оператор instanceof не делает различия при проверке между родительскими и дочерними классами.

Не путайтесь - если объект будет действительно родительского класса то, конечно же, проверка на принадлежность к дочернему классу вернет false:

<?php $obj = new ParentClass; // объект родительского класса var_dump($obj instanceof ParentClass); // выведет true var_dump($obj instanceof ChildClass); // выведет false ?>

Сделайте класс User с публичным свойствами name и surname.

Сделайте класс Employee, который будет наследовать от класса User и добавлять свойство salary.

Сделайте класс City с публичными свойствами name и population.

Создайте 3 объекта класса User, 3 объекта класса Employee, 3 объекта класса City, и в произвольном порядке запишите их в массив $arr.

Переберите циклом массив $arr и выведите на экран столбец свойств name тех объектов, которые принадлежат классу User или потомку этого класса.

Переберите циклом массив $arr и выведите на экран столбец свойств name тех объектов, которые не принадлежат классу User или потомку этого класса.

Переберите циклом массив $arr и выведите на экран столбец свойств name тех объектов, которые принадлежат именно классу User, то есть не классу City и не классу Employee.

byenru