instanceof-operaattori ja perintä OOP:ssa PHP:ssä
Käydään läpi perinnän erityispiirteet käytettäessä
instanceof-operaattoria. Oletetaan, että meillä on yliluokka
ja aliluokka:
<?php
// Yliluokka:
class ParentClass
{
}
// Aliluokka:
class ChildClass extends ParentClass
{
}
?>
Luodaan olio aliluokasta:
<?php
$obj = new ChildClass;
?>
Tarkastetaan nyt instanceof:n avulla,
kuuluuko olioomme luokkaan ParentClass
ja luokkaan ChildClass:
<?php
var_dump($obj instanceof ChildClass); // tulostaa true
var_dump($obj instanceof ParentClass); // tulostaa myös true
?>
Kuten esimerkistä näet - instanceof-operaattori
ei tee eroa tarkastettaessa yli- ja aliluokkien välillä.
Älä hämäänny - jos olio on todella
yliluokasta, niin tietysti tarkastus
kuuluvuudesta aliluokkaan palauttaa
false:
<?php
$obj = new ParentClass; // yliluokan olio
var_dump($obj instanceof ParentClass); // tulostaa true
var_dump($obj instanceof ChildClass); // tulostaa false
?>
Tee luokka User, jossa on julkiset ominaisuudet
name ja surname.
Tee luokka Employee, joka perii
luokasta User ja lisää
ominaisuuden salary.
Tee luokka City, jossa on julkiset ominaisuudet
name ja population.
Luo 3 kappaletta luokan User oliota,
3 kappaletta luokan Employee oliota,
3 kappaletta luokan City oliota, ja
satunnaisessa järjestyksessä tallenna ne taulukkoon
$arr.
Käy läpi silmukalla taulukko $arr ja tulosta
näytölle name-ominaisuuksien sarake niille
olioille, jotka kuuluvat luokkaan User
tai sen aliluokkaan.
Käy läpi silmukalla taulukko $arr ja tulosta
näytölle name-ominaisuuksien sarake niille
olioille, jotka eivät kuulu luokkaan User
tai sen aliluokkaan.
Käy läpi silmukalla taulukko $arr ja tulosta
näytölle name-ominaisuuksien sarake niille
olioille, jotka kuuluvat nimenomaan luokkaan
User, eli eivät luokkaan City
eikä luokkaan Employee.