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