is_a
method_exists
Classes/Object Functions
PHP Manual

# is_subclass_of

(PHP 4, PHP 5)

is_subclass_of — Checks if the object has this class as one of its parents

### Description

bool is_subclass_of ( mixed `$object` , string `$class_name` [, bool `$allow_string` = `TRUE` ] )

Checks if the given `object` has the class `class_name` as one of its parents.

### Parameters

`object`

  A class name or an object instance. No error is generated if the class does not exist.

`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.

### Return Values

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

### Changelog

Version | Description
--- | ---
5.3.9 | Added `allow_string` parameter
5.3.7 | Added support for `class_name` to work with interfaces
5.0.3 | You may also specify the `object` parameter as a string (the name of the class)

### Examples

Example #1 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";
}
?>`

The above example will output:

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

Example #2 is_subclass_of() using interface example

`<?php
// Define the Interface
interface MyInterface
{
public function MyFunction();
}
// Define the class implementation of the interface
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass Implements MyInterface!";
}
}
// Instantiate the object
$my_object = new MyClass;
// Works since 5.3.7
// Test using the object instance of the class
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Yes, \$my_object is a subclass of MyInterface\n";
} else {
echo "No, \$my_object is not a subclass of MyInterface\n";
}
// Test using a string of the class name
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Yes, MyClass is a subclass of MyInterface\n";
} else {
echo "No, MyClass is not a subclass of MyInterface\n";
}
?>`

The above example will output:

    Yes, $my_object is a subclass of MyInterface
    Yes, MyClass is a subclass of MyInterface

### Notes

> Note:

> Using this function will use any registered autoloaders if the class is not already known.

### See Also

- get_class() - Returns the name of the class of an object
- get_parent_class() - Retrieves the parent class name for object or class
- is_a() - Checks if the object is of this class or has this class as one of its parents
- class_parents() - Return the parent classes of the given class

is_a
method_exists
Classes/Object Functions
PHP Manual