PHP - Class/Object is_subclass_of() Function
The PHP Class/Object is_subclass_of() function is used to determine that an object or class is a subclass of a particular class. It returns true if the class inherits the parent class, and false otherwise. If you want to verify the inheritance relationships in your object-oriented programs, this function is very helpful.
Syntax
Below is the syntax of the PHP Class/Object is_subclass_of() function −
bool is_subclass_of ( mixed $object_or_class, string $class, bool $allow_string = true )
Parameters
Below are the parameters of the is_subclass_of() function −
$object_or_class − It is the object instance or class name you want to check.
$class − It is the class name you are checking for.
$allow_string − It is optional. If set to true, the first parameter can be a string representing the class name. Default is true.
Return Value
The is_subclass_of() function returns TRUE if the first parameter is a subclass of the given class, FALSE otherwise.
PHP Version
First introduced in core PHP 4, the is_subclass_of() function continues to function easily in PHP 5, PHP 7, and PHP 8.
Example 1
This example shows how to use the PHP Class/Object is_subclass_of() function to check if one class is a subclass of another class.
<?php
// Define a class
class Website {
var $theme = "Blue";
}
//Define a child class
class BlogPost extends Website {
var $author = 'Admin';
}
$site = new Website();
$post = new BlogPost();
if (is_subclass_of($post, 'Website')) {
echo "Yes, BlogPost is a subclass of Website";
}
else {
echo "No, BlogPost is not a subclass of Website";
}
?>
Output
Here is the outcome of the following code −
Yes, BlogPost is a subclass of Website
Example 2
In the below PHP code we will use the is_subclass_of() function and check if a class (Blog) implements an interface (WebsiteInterface). So it also checks for an unrelated interface.
<?php
// Define interface here
interface WebsiteInterface {
public function greet();
}
// Define a class that implements the above interface
class Blog implements WebsiteInterface {
function greet() {
echo "Hello, WebsiteInterface";
}
}
// Create an instance
$post = new Blog;
if (is_subclass_of($post, 'WebsiteInterface')) {
echo "Yes, Blog implements WebsiteInterface interface\n";
}
else {
echo "No, Blog does not implement WebsiteInterface interface\n";
}
if (is_subclass_of($post, 'Network')) {
echo "Yes, Blog implements Network interface";
}
else {
echo "No, Blog does not implement Network interface";
}
?>
Output
This will generate the below output −
Yes, Blog implements WebsiteInterface interface No, Blog does not implement Network interface
Example 3
This example explains how to use the is_subclass_of() function to see if one class (wid_fact_child) is a subclass of another (wid_fact). It also shows how to evaluate the relationship in both the child and parent groups.
<?php
// Define a class
class wid_fact {
var $oink = 'moo';
}
// Define a child class
class wid_fact_child extends wid_fact {
var $oink = 'oink';
}
// Create a new object
$WF = new wid_fact();
$WFC = new wid_fact_child();
if (is_subclass_of($WFC, 'wid_fact')) {
echo "Yes, \$WFC is a subclass of wid_fact \n";
}
else {
echo "No, \$WFC is not a subclass of wid_fact \n";
}
if (is_subclass_of($WF, 'wid_fact')) {
echo "Yes, \$WF is a subclass of wid_fact \n";
}
else {
echo "No, \$WF is not a subclass of wid_fact \n";
}
?>
Output
Following is the output of the above code −
Yes, $WFC is a subclass of wid_fact No, $WF is not a subclass of wid_fact