НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗ppOpIhOI 36 of 107 menu

Оператор 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.

Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить