is_subclass_of
(PHP 4, PHP 5)
is_subclass_of — Détermine si un objet est une sous-classe d'une classe donnée
Description
Vérifie si l'objet object
a la classe
class_name
parmi ses parents.
Liste de paramètres
-
object
-
Un nom de classe ou une instance d'un objet
-
class_name
-
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ètreobject
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
est une instance d'une classe qui est une sous-classe de
class_name
, FALSE
sinon.
Historique
Version | Description |
---|---|
5.3.9 |
Ajout du paramètre allow_string .
|
5.3.7 |
Ajout du support pour class_name pour fonctionner
avec les interfaces
|
5.0.3 |
vous pouvez également spécifier le paramètre object
en tant que chaîne de caractères (le nom de la classe).
|
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"; } // utilisable uniquement depuis PHP 5.0.3 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"; } ?>
<?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 Yes, MyClass est une sous-classe de MyInterface
Notes
Note:
L'usage de cette fonction utilisera toutes les autoloaders enregistrés si la classe n'est pas encore connue.
Voir aussi
- get_class() - Retourne le nom de la classe d'un objet
- get_parent_class() - Retourne le nom de la classe parente d'un objet
- is_a() - Vérifie si l'objet est une instance d'une classe donnée ou a cette classe parmi ses parents
- class_parents() - Retourne la classe parente d'une classe