(PHP 4, PHP 5, PHP 7)
is_subclass_of — Comprueba si el objeto tiene esta clase como uno de sus padres o si la implementa
   Comprueba si el object dado tiene la clase
   class_name como uno de sus padres o si la implementa.
  
objectUn nombre de clase o una instancia de objeto. No se genera ningún error si la clase no existe.
class_nameEl nombre de clase
allow_string
       Si se define este parámetro como false, no se permite el uso
       del nombre de la clase como object. Esto también previene llamar el autoloader si la clase no existe.
      
   Esta función devuelve TRUE si el objeto object
   pertenece a una clase que sea subclase de
   class_name, FALSE en caso contrario.
  
| Versión | Descripción | 
|---|---|
| 5.3.9 | Se añadió el parámetro allow_string | 
| 5.3.7 | Se añadió el soporte para class_namepara trabajar con
        interfaces | 
| 5.0.3 | Es posible especificar también el parámetro objectcomo una
        cadena (el nombre de la clase) | 
Ejemplo #1 Ejemplo de is_subclass_of()
<?php
// definir una clase
class FabricaWidget
{
  var $oink = 'moo';
}
// definir una clase hija
class Hijo_FabricaWidget extends FabricaWidget
{
  var $oink = 'oink';
}
// crear un nuevo objeto
$FW = new FabricaWidget();
$HFW = new Hijo_FabricaWidget();
if (is_subclass_of($HFW, 'FabricaWidget')) {
  echo "si, \$HFW es una sub-clase de FabricaWidget\n";
} else {
  echo "no, \$HFW no es una sub-clase de FabricaWidget\n";
}
if (is_subclass_of($FW, 'FabricaWidget')) {
  echo "si, \$FW es una sub-clase de FabricaWidget\n";
} else {
  echo "no, \$FW no es una sub-clase de FabricaWidget\n";
}
// usable sólo desde PHP 5.0.3
if (is_subclass_of('Hijo_FabricaWidget', 'FabricaWidget')) {
  echo "si, Hijo_FabricaWidget es una sub-clase de FabricaWidget\n";
} else {
  echo "no, Hijo_FabricaWidget no es una sub-clase de FabricaWidget\n";
}
?>
El resultado del ejemplo sería:
si, $HFW es una sub-clase de FabricaWidget no, $FW no es una sub-clase de FabricaWidget si, Hijo_FabricaWidget es una sub-clase de FabricaWidget
Ejemplo #2 Ejemplo de is_subclass_of() usando una interfaz
<?php
// Definir la interfaz
interface MiInterfaz
{
  public function MiFunción();
}
// Definir la implementación de la clase de la interfaz
class MiClase implements MiInterfaz
{
  public function MiFunción()
  {
    return "¡MiClase implementa MiInterfaz!";
  }
}
// Instanciar el objeto
$mi_objeto = new MiClase;
// Funciona desde 5.3.7
// Una prueba usando la instancia del objeto de la clase
if (is_subclass_of($mi_objeto, 'MiInterfaz')) {
  echo "Sí, \$mi_objeto es una subclase de MiInterfaz\n";
} else {
  echo "No, \$mi_objeto no es una subclase de MiInterfaz\n";
}
// Una prueba usando una cadena del nombre de la clase
if (is_subclass_of('MiClase', 'MiInterfaz')) {
  echo "Sí, MiClase es una subclase de MiInterfaz\n";
} else {
  echo "No, MiClase no es una subclase de MiInterfaz\n";
}
?>
El resultado del ejemplo sería:
Sí, $mi_objeto es una subclase de MiInterfaz Sí, MiClase es una subclase de MiInterfaz
Nota:
Esta función cargará cualquier autocargador registrado si la clase todavía no existe.