Rechercher une fonction PHP

is_subclass_of

(PHP 4, PHP 5, PHP 7)

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

Description

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

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

  

Liste de paramètres

object

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_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ètre object 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";
}
?>

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

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-is-subclass-of.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut