⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне