Manuel PHP
Opérateurs de types
instanceof est utilisé pour déterminer si une variable PHP est un objet instancié d'une certaine classe :
Example#1 Utilisation de instanceof avec des classes
L'exemple ci-dessus va afficher :
Example#2 Utilisation de instanceof avec des classes héritées
L'exemple ci-dessus va afficher :
Example#3 Utilisation de instanceof pour une classe
L'exemple ci-dessus va afficher :
Bien que instanceof soit habituellement utilisé avec un nom de classe littéral, il peut également être utilisé avec un autre objet ou une chaîne représentant une variable :
Example#4 Utilisation de instanceof avec d'autres variables
- <?php
- interface MyInterface
- {
- }
- class MyClass implements MyInterface
- {
- }
- $a = new MyClass;
- $b = new MyClass;
- $c = 'MyClass';
- $d = 'NotMyClass';
- var_dump($a instanceof $b); // $b est un objet de la classe MyClass
- var_dump($a instanceof $c); // $c est une chaîne 'MyClass'
- var_dump($a instanceof $d); // $d est une chaîne 'NotMyClass'
- ?>
L'exemple ci-dessus va afficher :
Il y a quelque piège à éviter. Avant PHP version 5.1.0, instanceof appelera __autoload() si le nom de la classe n'existe pas. De plus, si la classe n'a pas été chargée, une erreur fatale sera émise. Ceci peut fonctionner en utilisant une référence de classe dynamique, ou une chaîne représentant une variable contenant le nom de la classe :
Example#5 Pas de recherche sur le nom de la classe et une erreur fatale avec instanceof en PHP 5.0
- <?php
- $d = 'NotMyClass';
- var_dump($a instanceof $d); // no fatal error here
- ?>
L'exemple ci-dessus va afficher :
L'opérateur instanceof a été introduit en PHP 5. Avant cette version, is_a() était utilisé mais is_a() est depuis devenu obsolète, en faveur de instanceof.
Voir aussi get_class() et is_a().
Remonter 
