Operatori instanceof dhe Trashëgimia në OOP në PHP
Le të shqyrtojmë veçoritë e trashëgimisë kur përdoret
operatori instanceof. Le të themi se kemi një klasë prind
dhe një klasë fëmijë:
<?php
// Klasa prind:
class ParentClass
{
}
// Klasa fëmijë:
class ChildClass extends ParentClass
{
}
?>
Le të krijojmë një objekt të klasës fëmijë:
<?php
$obj = new ChildClass;
?>
Tani le të kontrollojmë duke përdorur instanceof,
nëse objekti ynë i përket klasës ParentClass
dhe klasës ChildClass:
<?php
var_dump($obj instanceof ChildClass); // do të shfaqë true
var_dump($obj instanceof ParentClass); // gjithashtu do të shfaqë true
?>
Siç e shihni nga shembulli - operatori instanceof
nuk bën dallim gjatë kontrollit midis klasave prind
dhe fëmijë.
Mos u ngatërroni - nëse objekti do të jetë me të vërtetë
i klasës prind, atëherë, sigurisht, kontrolli
për përkatësinë në klasën fëmijë do të kthejë
false:
<?php
$obj = new ParentClass; // objekt i klasës prind
var_dump($obj instanceof ParentClass); // do të shfaqë true
var_dump($obj instanceof ChildClass); // do të shfaqë false
?>
Krijoni një klasë User me vetitë publike
name dhe surname.
Krijoni një klasë Employee, e cila do të
trashëgojë nga klasa User dhe do të shtojë
vetinë salary.
Krijoni një klasë City me vetitë publike
name dhe population.
Krijoni 3 objekte të klasës User,
3 objekte të klasës Employee,
3 objekte të klasës City, dhe
në mënyrë të rastësishme shkruajini ato në array
$arr.
Kaloni nëpër array $arr me lak dhe shfaqni
në ekran një kolonë të vetive name të atyre
objekteve që i përkasin klasës User
ose pasardhësve të kësaj klase.
Kaloni nëpër array $arr me lak dhe shfaqni
në ekran një kolonë të vetive name të atyre
objekteve që nuk i përkasin klasës User
ose pasardhësve të kësaj klase.
Kaloni nëpër array $arr me lak dhe shfaqni
në ekran një kolonë të vetive name të atyre
objekteve që i përkasin pikërisht klasës
User, domethënë jo klasës City
dhe jo klasës Employee.