is_subclass_of

(PHP 4, PHP 5, PHP 7, PHP 8)

is_subclass_ofDétermine si un objet est une sous-classe d'une classe donnée ou l'implémente

Description

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

Vérifie si l'objet object_or_class a la classe class parmi ses parents ou l'implémente.

Liste de paramètres

object_or_class

Un nom de classe ou une instance d'un objet. Aucune erreur n'est générée si la classe n'existe pas.

class

Le nom de la classe

allow_string

Si ce paramètre est défini à false, un nom de classe sous forme de chaîne de caractères dans le paramètre object_or_class n'est pas autorisé. Ceci permet d'éviter d'appeler l'autoloader si la classe n'existe pas.

Valeurs de retour

Cette fonction retourne true si l'objet object_or_class est une instance d'une classe qui est une sous-classe de class, false sinon.

Exemples

Exemple #1 Exemple avec is_subclass_of()

<?php
// Définit une classe
class WidgetFactory
{
var
$oink = 'moo';
}

// Définit une sous-classe
class WidgetFactory_Child extends WidgetFactory
{
var
$oink = 'oink';
}

// Création d'un nouvel objet
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();

if (
is_subclass_of($WFC, 'WidgetFactory')) {
echo
"oui, \$WFC est une sous-classe de la classe WidgetFactory\n";
} else {
echo
"non, \$WFC n'est pas une sous-classe de la classe WidgetFactory\n";
}


if (
is_subclass_of($WF, 'WidgetFactory')) {
echo
"oui, \$WF est une sous-classe de la classe WidgetFactory\n";
} else {
echo
"non, \$WF n'est pas une sous-classe de la classe WidgetFactory\n";
}


if (
is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo
"oui, WidgetFactory_Child est une sous-classe de la classe WidgetFactory\n";
} else {
echo
"non, WidgetFactory_Child n'est pas une sous-classe de la classe WidgetFactory\n";
}
?>

L'exemple ci-dessus va afficher :

oui, $WFC est une sous-classe de la classe WidgetFactory non, $WF n'est pas une sous-classe de la classe WidgetFactory oui, WidgetFactory_Child est une sous-classe de la classe WidgetFactory

Exemple #2 Exemple avec is_subclass_of() en utilisant une interface

<?php
// Définition de l'interface
interface MyInterface
{
public function
MyFunction();
}

// Définition de l'implémentation de la classe de l'interface
class MyClass implements MyInterface
{
public function
MyFunction()
{
return
"MyClass implémente MyInterface!";
}
}

// Instanciation de l'objet
$my_object = new MyClass;

// Fonctionne depuis PHP 5.3.7

// Test utilisant l'objet de l'instance de la classe
if (is_subclass_of($my_object, 'MyInterface')) {
echo
"Oui, \$my_object est une sous-classe de MyInterface\n";
} else {
echo
"Non, \$my_object n'est pas une sous-classe de MyInterface\n";
}

// Test utilisant le nom de la classe sous forme de chaîne de caractères
if (is_subclass_of('MyClass', 'MyInterface')) {
echo
"Oui, MyClass est une sous-classe de MyInterface\n";
} else {
echo
"Non, MyClass n'est pas une sous-classe de MyInterface\n";
}
?>

L'exemple ci-dessus va afficher :

Oui, $my_object est une sous-classe de MyInterface Oui, MyClass est une sous-classe de MyInterface

Notes

Note:

L'usage de cette fonction utilisera tous les autoloaders enregistrés si la classe n'est pas encore connue.

Voir aussi

To Top