Operātors instanceof un mantojums OOP PHP
Izpētīsim mantojuma īpatnības, lietojot
operātoru instanceof. Pieņemsim, ka mums ir vecāku klase
un bērnu klase:
<?php
// Vecāku klase:
class ParentClass
{
}
// Bērnu klase:
class ChildClass extends ParentClass
{
}
?>
Izveidosim bērnu klases objektu:
<?php
$obj = new ChildClass;
?>
Pārbaudīsim tagad ar instanceof palīdzību,
vai mūsu objekts pieder klasei ParentClass
un klasei ChildClass:
<?php
var_dump($obj instanceof ChildClass); // izvadīs true
var_dump($obj instanceof ParentClass); // arī izvadīs true
?>
Kā redzat no piemēra - operātors instanceof
neveido atšķirību pārbaudē starp vecāku
un bērnu klasēm.
Nejaucieties - ja objekts patiešām būs
vecāku klases, tad, protams, pārbaude
uz piederību bērnu klasei atgriezīs
false:
<?php
$obj = new ParentClass; // vecāku klases objekts
var_dump($obj instanceof ParentClass); // izvadīs true
var_dump($obj instanceof ChildClass); // izvadīs false
?>
Izveidojiet klasi User ar publiskām īpašībām
name un surname.
Izveidojiet klasi Employee, kas mantos
no klases User un pievienos
īpašību salary.
Izveidojiet klasi City ar publiskām īpašībām
name un population.
Izveidojiet 3 klases User objektus,
3 klases Employee objektus,
3 klases City objektus, un
nejaušā secībā ierakstiet tos masīvā
$arr.
Izejiet ciklu cauri masīvam $arr un izvadiet
uz ekrānu īpašību name kolonnu tiem
objektiem, kas pieder klasei User
vai šīs klases pēctečiem.
Izejiet ciklu cauri masīvam $arr un izvadiet
uz ekrānu īpašību name kolonnu tiem
objektiem, kas nepieder klasei User
vai šīs klases pēctečiem.
Izejiet ciklu cauri masīvam $arr un izvadiet
uz ekrānu īpašību name kolonnu tiem
objektiem, kas pieder tieši klasei
User, tas ir, ne klasei City
un ne klasei Employee.