Operaator instanceof ja pärimine OOP-s PHP-s
Vaatleme pärimise eripärasid operaatori
instanceof kasutamisel. Olgu meil vanemklass
ja lapsklass:
<?php
// Vanemklass:
class ParentClass
{
}
// Lapsklass:
class ChildClass extends ParentClass
{
}
?>
Loome lapsklassi objekti:
<?php
$obj = new ChildClass;
?>
Kontrollime nüüd instanceof abil,
kas meie objekt kuulub klassi ParentClass
ja klassi ChildClass:
<?php
var_dump($obj instanceof ChildClass); // väljastab true
var_dump($obj instanceof ParentClass); // samuti väljastab true
?>
Nagu näitest näete - operaator instanceof
ei tee vahet vanem- ja lapsklasside kontrollimisel.
Ärge segadusse sattuge - kui objekt on tegelikult
vanemklassi, siis loomulikult tagastab kontroll
lapsklassi kuulumise kohta
false:
<?php
$obj = new ParentClass; // vanemklassi objekt
var_dump($obj instanceof ParentClass); // väljastab true
var_dump($obj instanceof ChildClass); // väljastab false
?>
Tehke klass User avalike omadustega
name ja surname.
Tehke klass Employee, mis
pärib klassist User ja lisab
omaduse salary.
Tehke klass City avalike omadustega
name ja population.
Looge 3 objekti klassi User,
3 objekti klassi Employee,
3 objekti klassi City, ja
pane need suvalises järjekorras massiivi
$arr.
Käige tsükliga läbi massiivi $arr ja kuvage
ekraanile veerg omadustega name nendest
objektidest, mis kuuluvad klassi User
või selle klassi järglastesse.
Käige tsükliga läbi massiivi $arr ja kuvage
ekraanile veerg omadustega name nendest
objektidest, mis ei kuulu klassi User
ega selle klassi järglastesse.
Käige tsükliga läbi massiivi $arr ja kuvage
ekraanile veerg omadustega name nendest
objektidest, mis kuuluvad täpselt klassi
User, st mitte klassi City
ega klassi Employee.