PHP - 类/对象 is_subclass_of() 函数



PHP 类/对象 is_subclass_of() 函数用于确定对象或类是否是特定类的子类。如果类继承了父类,则返回 true,否则返回 false。如果您想验证面向对象程序中的继承关系,此函数非常有用。

语法

以下是 PHP 类/对象 is_subclass_of() 函数的语法:

bool is_subclass_of (
   mixed $object_or_class, 
   string $class, 
   bool $allow_string = true )

参数

以下是 is_subclass_of() 函数的参数:

  • $object_or_class - 要检查的对象实例或类名。

  • $class - 要检查的类名。

  • $allow_string - 可选。如果设置为 true,则第一个参数可以是表示类名的字符串。默认为 true。

返回值

is_subclass_of() 函数如果第一个参数是给定类的子类,则返回 TRUE,否则返回 FALSE。

PHP 版本

is_subclass_of() 函数首次出现在 PHP 4 的核心版本中,并且在 PHP 5、PHP 7 和 PHP 8 中继续轻松运行。

示例 1

此示例演示如何使用 PHP 类/对象 is_subclass_of() 函数来检查一个类是否为另一个类的子类。

<?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"; 
   }
?>

输出

以下是以下代码的结果:

Yes, BlogPost is a subclass of Website

示例 2

在下面的 PHP 代码中,我们将使用 is_subclass_of() 函数并检查一个类(Blog)是否实现了接口(WebsiteInterface)。因此,它还检查不相关的接口。

<?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"; 
   } 
?> 

输出

这将生成以下输出:

Yes, Blog implements WebsiteInterface interface
No, Blog does not implement Network interface

示例 3

此示例说明如何使用 is_subclass_of() 函数来查看一个类 (wid_fact_child) 是否为另一个类 (wid_fact) 的子类。它还演示了如何在子组和父组中评估关系。

<?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";
   }
?> 

输出

以下是上述代码的输出:

Yes, $WFC is a subclass of wid_fact
No, $WF is not a subclass of wid_fact
php_function_reference.htm
广告