Operatoren instanceof og arv i OOP i PHP
La oss se på egenskapene ved arv når vi bruker
operatoren instanceof. La oss si at vi har en foreldreklasse
og en barneklasse:
<?php
// Foreldreklassen:
class ParentClass
{
}
// Barneklassen:
class ChildClass extends ParentClass
{
}
?>
La oss opprette et objekt av barneklassen:
<?php
$obj = new ChildClass;
?>
La oss nå sjekke med instanceof
om objektet vårt tilhører klassen ParentClass
og klassen ChildClass:
<?php
var_dump($obj instanceof ChildClass); // vil vise true
var_dump($obj instanceof ParentClass); // vil også vise true
?>
Som du ser fra eksemplet - operatoren instanceof
gjør ikke forskjell på foreldreklasser
og barneklasser under sjekken.
Ikke bli forvirret - hvis objektet faktisk er
av foreldreklassen, vil selvsagt sjekken
for tilhørighet til barneklassen returnere
false:
<?php
$obj = new ParentClass; // objekt av foreldreklassen
var_dump($obj instanceof ParentClass); // vil vise true
var_dump($obj instanceof ChildClass); // vil vise false
?>
Lag en klasse User med offentlige egenskaper
name og surname.
Lag en klasse Employee som
arver fra klassen User og legger til
egenskapen salary.
Lag en klasse City med offentlige egenskaper
name og population.
Opprett 3 objekter av klassen User,
3 objekter av klassen Employee,
3 objekter av klassen City, og skriv
dem i tilfeldig rekkefølge inn i arrayet
$arr.
Gjennomgå arrayet $arr med en løkke og skriv
ut en kolonne med egenskapene name for de
objektene som tilhører klassen User
eller en underklasse av denne klassen.
Gjennomgå arrayet $arr med en løkke og skriv
ut en kolonne med egenskapene name for de
objektene som ikke tilhører klassen User
eller en underklasse av denne klassen.
Gjennomgå arrayet $arr med en løkke og skriv
ut en kolonne med egenskapene name for de
objektene som tilhører nøyaktig klassen
User, det vil si ikke klassen City
og ikke klassen Employee.