(PHP 4, PHP 5, PHP 7, PHP 8)
is_subclass_of — Determina si un objeto es una subclase de una clase dada o la implementa
Verifica si el objeto object_or_class
tiene la clase
class
entre sus padres o la implementa.
object_or_class
Un nombre de clase o una instancia de un objeto. No se genera ningún error si la clase no existe.
class
El nombre de la clase
allow_string
Si este argumento es establecido a false
, un nombre de clase en forma
de string en el argumento object_or_class
no es permitido. Esto permite evitar llamar al autoloader si la clase
no existe.
Esta función retorna true
si el objeto object_or_class
es una instancia de una clase que es una subclase de
class
, false
en caso contrario.
Ejemplo #1 Ejemplo con is_subclass_of()
<?php
// Define una clase
class WidgetFactory
{
var $oink = 'moo';
}
// Define una subclase
class WidgetFactory_Child extends WidgetFactory
{
var $oink = 'oink';
}
// Creación de un nuevo objeto
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "sí, \$WFC es una subclase de la clase WidgetFactory\n";
} else {
echo "no, \$WFC no es una subclase de la clase WidgetFactory\n";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "sí, \$WF es una subclase de la clase WidgetFactory\n";
} else {
echo "no, \$WF no es una subclase de la clase WidgetFactory\n";
}
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "sí, WidgetFactory_Child es una subclase de la clase WidgetFactory\n";
} else {
echo "no, WidgetFactory_Child no es una subclase de la clase WidgetFactory\n";
}
?>
El resultado del ejemplo sería:
sí, $WFC es una subclase de la clase WidgetFactory no, $WF no es una subclase de la clase WidgetFactory sí, WidgetFactory_Child es una subclase de la clase WidgetFactory
Ejemplo #2 Ejemplo con is_subclass_of() utilizando una interfaz
<?php
// Definición de la interfaz
interface MyInterface
{
public function MyFunction();
}
// Definición de la implementación de la clase de la interfaz
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass implementa MyInterface!";
}
}
// Instanciación del objeto
$my_object = new MyClass;
// Funciona desde PHP 5.3.7
// Prueba utilizando el objeto de la instancia de la clase
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Sí, \$my_object es una subclase de MyInterface\n";
} else {
echo "No, \$my_object no es una subclase de MyInterface\n";
}
// Prueba utilizando el nombre de la clase en forma de string
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Sí, MyClass es una subclase de MyInterface\n";
} else {
echo "No, MyClass no es una subclase de MyInterface\n";
}
?>
El resultado del ejemplo sería:
Sí, $my_object es una subclase de MyInterface Sí, MyClass es una subclase de MyInterface
Nota:
Esta función cargará cualquier autocargador registrado si la clase todavía no existe.