Opérateurs de types

instanceof est utilisé pour déterminer si une variable PHP est un objet instancié d'une certaine classe :

Exemple #1 Utilisation de instanceof avec des classes

  1. <?php
  2. class MaClasse
  3. {
  4. }
  5. class PasMaClasse
  6. {
  7. }
  8. $a = new MaClasse;
  9.  
  10. var_dump($a instanceof MaClasse);
  11. var_dump($a instanceof PasMaClasse);
  12. ?>
  1. <?php
  2. class ParentClass
  3. {
  4. }
  5. class MyClass extends ParentClass
  6. {
  7. }
  8. $a = new MyClass;
  9.  
  10. var_dump($a instanceof MyClass);
  11. var_dump($a instanceof ParentClass);
  12. ?>
  1. <?php
  2. class MyClass
  3. {
  4. }
  5. $a = new MyClass;
  6. var_dump(!($a instanceof stdClass));
  7. ?>
  1. <?php
  2. interface MyInterface
  3. {
  4. }
  5. class MyClass implements MyInterface
  6. {
  7. }
  8. $a = new MyClass;
  9.  
  10. var_dump($a instanceof MyClass);
  11. var_dump($a instanceof MyInterface);
  12. ?>
  1. <?php
  2. interface MyInterface
  3. {
  4. }
  5. class MyClass implements MyInterface
  6. {
  7. }
  8. $a = new MyClass;
  9. $b = new MyClass;
  10. $c = 'MyClass';
  11. $d = 'NotMyClass';
  12. var_dump($a instanceof $b); // $b est un objet de la classe MyClass
  13. var_dump($a instanceof $c); // $c est une chaîne 'MyClass'
  14. var_dump($a instanceof $d); // $d est une chaîne 'NotMyClass'
  15. ?>
  1. <?php
  2. $a = 1;
  3. $b = NULL;
  4. $c = imagecreate(5, 5);
  5. var_dump($a instanceof stdClass); // $a est un entier
  6. var_dump($b instanceof stdClass); // $b vaut NULL
  7. var_dump($c instanceof stdClass); // $c est une ressource
  8. var_dump(FALSE instanceof stdClass);
  9. ?>
  1. <?php
  2. $d = 'NotMyClass';
  3. var_dump($a instanceof $d); // no fatal error here
  4. ?>

L'exemple ci-dessus va afficher :

bool(false)

L'opérateur instanceof a été introduit en PHP 5. Avant cette version, is_a() était utilisée mais is_a() est depuis devenue obsolète, en faveur de instanceof. Notez que depuis PHP 5.3.0, is_a() n'est de nouveau plus obsolète.

Voir aussi get_class() et is_a().

LoadingChargement en cours