# is_subclass_of

(PHP 4, PHP 5, PHP 7)

is_subclass_of — 如果此对象是该类的子类，则返回 `TRUE`

### 说明

is_subclass_of ( object `$object` , string `$class_name` ) : bool

如果对象 `object` 所属类是类 `class_name` 的子类，则返回 `TRUE`，否则返回 `FALSE`。

> Note:

> 自 PHP 5.0.3 起也可以用一个字符串来指定 `object` 参数（类名）。

Example #1 is_subclass_of() 例子

    <?php
    // define a class
    class WidgetFactory
    {
      var $oink = 'moo';
    }

    // define a child class
    class WidgetFactory_Child extends WidgetFactory
    {
      var $oink = 'oink';
    }

    // create a new object
    $WF = new WidgetFactory();
    $WFC = new WidgetFactory_Child();

    if (is_subclass_of($WFC, 'WidgetFactory')) {
      echo "yes, \$WFC is a subclass of WidgetFactory\n";
    } else {
      echo "no, \$WFC is not a subclass of WidgetFactory\n";
    }

    if (is_subclass_of($WF, 'WidgetFactory')) {
      echo "yes, \$WF is a subclass of WidgetFactory\n";
    } else {
      echo "no, \$WF is not a subclass of WidgetFactory\n";
    }

    // usable only since PHP 5.0.3
    if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
      echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
    } else {
      echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
    }
    ?>

以上例程会输出：

    yes, $WFC is a subclass of WidgetFactory
    no, $WF is not a subclass of WidgetFactory
    yes, WidgetFactory_Child is a subclass of WidgetFactory

参见 get_class()、 get_parent_class() 和 is_a()。

### 参数

`object`

  A class name or an object instance

`class_name`

  The class name

`allow_string`

  If this parameter set to false, string class name as `object` is not allowed. This also prevents from calling autoloader if the class doesn't exist.

### 返回值

This function returns `TRUE` if the object `object`, belongs to a class which is a subclass of `class_name`, `FALSE` otherwise.

### 更新日志

版本 | 说明
--- | ---
5.3.9 | Added `allow_string` parameter
5.0.3 | You may also specify the `object` parameter as a string (the name of the class)

### 范例

Example #2 is_subclass_of() example

    <?php
    // define a class
    class WidgetFactory
    {
      var $oink = 'moo';
    }

    // define a child class
    class WidgetFactory_Child extends WidgetFactory
    {
      var $oink = 'oink';
    }

    // create a new object
    $WF = new WidgetFactory();
    $WFC = new WidgetFactory_Child();

    if (is_subclass_of($WFC, 'WidgetFactory')) {
      echo "yes, $WFC is a subclass of WidgetFactory\n";
    } else {
      echo "no, $WFC is not a subclass of WidgetFactory\n";
    }

    if (is_subclass_of($WF, 'WidgetFactory')) {
      echo "yes, $WF is a subclass of WidgetFactory\n";
    } else {
      echo "no, $WF is not a subclass of WidgetFactory\n";
    }

    // usable only since PHP 5.0.3
    if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
      echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
    } else {
      echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
    }
    ?>

以上例程会输出：

    yes, $WFC is a subclass of WidgetFactory
    no, $WF is not a subclass of WidgetFactory
    yes, WidgetFactory_Child is a subclass of WidgetFactory

### 注释

> Note:

> 如果此类不是已知类，使用此函数会使用任何已注册的 autoloader。

### 参见

- get_class() - 返回对象的类名
- get_parent_class() - 返回对象或类的父类名
- is_a() - 如果对象属于该类或该类是此对象的父类则返回 TRUE
- class_parents() - 返回指定类的父类。