The instanceof Operator and Inheritance in OOP in PHP
Let's examine the features of inheritance when using the
instanceof
operator. Suppose we have a parent class
and a child class:
<?php
// Parent class:
class ParentClass
{
}
// Child class:
class ChildClass extends ParentClass
{
}
?>
Let's create an object of the child class:
<?php
$obj = new ChildClass;
?>
Now let's check using instanceof
,
whether our object belongs to the ParentClass
class
and the ChildClass
class:
<?php
var_dump($obj instanceof ChildClass); // will output true
var_dump($obj instanceof ParentClass); // will also output true
?>
As you can see from the example - the instanceof
operator
does not distinguish between parent
and child classes during the check.
Don't be confused - if the object is indeed
of the parent class, then, of course, the check
for belonging to the child class will return
false
:
<?php
$obj = new ParentClass; // object of the parent class
var_dump($obj instanceof ParentClass); // will output true
var_dump($obj instanceof ChildClass); // will output false
?>
Make a User
class with public properties
name
and surname
.
Make an Employee
class that will
inherit from the User
class and add a
salary
property.
Make a City
class with public properties
name
and population
.
Create 3
objects of the User
class,
3
objects of the Employee
class,
3
objects of the City
class, and
in an arbitrary order write them into the array
$arr
.
Loop through the $arr
array and output
a column of name
properties to the screen for those
objects that belong to the User
class
or a descendant of this class.
Loop through the $arr
array and output
a column of name
properties to the screen for those
objects that do not belong to the User
class
or a descendant of this class.
Loop through the $arr
array and output
a column of name
properties to the screen for those
objects that belong precisely to the
User
class, meaning not the City
class
and not the Employee
class.