Operatoriaus instanceof naudojimas ir OOP paveldėjimas PHP
Išnagrinėkime paveldėjimo ypatumus naudojant
operatorių instanceof. Tarkime, kad turime tėvinę klasę
ir dukterinę klasę:
<?php
// Tėvinė klasė:
class ParentClass
{
}
// Dukterinė klasė:
class ChildClass extends ParentClass
{
}
?>
Sukurkime dukterinės klasės objektą:
<?php
$obj = new ChildClass;
?>
Dabar patikrinkime naudodami instanceof,
ar mūsų objektas priklauso klasei ParentClass
ir klasei ChildClass:
<?php
var_dump($obj instanceof ChildClass); // išves true
var_dump($obj instanceof ParentClass); // taip pat išves true
?>
Kaip matote iš pavyzdžio - operatorius instanceof
neatskiria tikrinant tėvines
ir dukterines klases.
Nesupainokite - jei objektas tikrai bus
tėvinės klasės, tai, žinoma, patikrinimas
ar jis priklauso dukterinei klasei grąžins
false:
<?php
$obj = new ParentClass; // tėvinės klasės objektas
var_dump($obj instanceof ParentClass); // išves true
var_dump($obj instanceof ChildClass); // išves false
?>
Sukurkite klasę User su viešomis savybėmis
name ir surname.
Sukurkite klasę Employee, kuri
paveldės iš klasės User ir pridės
savybę salary.
Sukurkite klasę City su viešomis savybėmis
name ir population.
Sukurkite 3 klasės User objektus,
3 klasės Employee objektus,
3 klasės City objektus ir
bet kokia tvarka įrašykite juos į masyvą
$arr.
Prabėkite ciklu per masyvą $arr ir išveskite
į ekraną savybės name stulpelį tų
objektų, kurie priklauso klasei User
arba šios klasės palikuonims.
Prabėkite ciklu per masyvą $arr ir išveskite
į ekraną savybės name stulpelį tų
objektų, kurie nepriklauso klasei User
arba šios klasės palikuonims.
Prabėkite ciklu per masyvą $arr ir išveskite
į ekraną savybės name stulpelį tų
objektų, kurie priklauso būtent klasei
User, tai yra ne klasei City
ir ne klasei Employee.