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
php_function_reference.htm
Advertisements