Die instanceof operateur en oorerwing in OOP in PHP
Kom ons kyk na die kenmerke van oorerwing wanneer die
instanceof operateur gebruik word. Laat ons sê ons het 'n ouerklas
en 'n kindklas:
<?php
// Ouergroep klas:
class ParentClass
{
}
// Kindklas:
class ChildClass extends ParentClass
{
}
?>
Kom ons skep 'n voorwerp van die kindklas:
<?php
$obj = new ChildClass;
?>
Kom ons toets nou met behulp van instanceof,
of ons voorwerp behoort aan die ParentClass klas
en die ChildClass klas:
<?php
var_dump($obj instanceof ChildClass); // sal true toon
var_dump($obj instanceof ParentClass); // sal ook true toon
?>
Soos jy uit die voorbeeld kan sien - die instanceof operateur
maak nie 'n onderskeid tussen ouer- en kindklasse tydens toetsing nie.
Moenie verwar raak nie - as die voorwerp werklik van die
ouerklas is, sal die toets
vir behoort aan die kindklas natuurlik
false teruggee:
<?php
$obj = new ParentClass; // voorwerp van die ouerklas
var_dump($obj instanceof ParentClass); // sal true toon
var_dump($obj instanceof ChildClass); // sal false toon
?>
Maak 'n klas User met openbare eienskappe
name en surname.
Maak 'n klas Employee wat sal
erf van die klas User en 'n
eienskap salary byvoeg.
Maak 'n klas City met openbare eienskappe
name en population.
Skep 3 voorwerpe van die User klas,
3 voorwerpe van die Employee klas,
3 voorwerpe van die City klas, en skryf
hulle in 'n willekeurige volgorde in die array
$arr.
Itereer deur die $arr array met 'n lus en vertoon
'n kolom van die name eienskappe op die skerm
van die voorwerpe wat aan die User klas
of 'n afstammeling van hierdie klas behoort.
Itereer deur die $arr array met 'n lus en vertoon
'n kolom van die name eienskappe op die skerm
van die voorwerpe wat nie aan die User klas
of 'n afstammeling van hierdie klas behoort nie.
Itereer deur die $arr array met 'n lus en vertoon
'n kolom van die name eienskappe op die skerm
van die voorwerpe wat presies aan die User klas
behoort, dit wil sê nie aan die City klas
of die Employee klas nie.