30 votes

Puis-je vérifier si un objet est en quelque sorte une classe spécifique, en PHP?

Exemple: une méthode est supposée renvoyer une instance d'une SpecificClass. Comment puis-je vérifier cette valeur de retour si elle provient de cette classe?

50voto

Pascal MARTIN Points 195780

Vous pouvez utiliser l' instanceof de l'opérateur de vérifier si un objet est une instance de :

  • Une classe
  • Ou une classe fille de la classe
  • Ou une instance d'une classe qui implémente une interface

Ce qui signifie qu'il ne peut pas être utilisé pour détecter si votre objet est une instance d'un specific classe -- comme il va dire "oui" si votre objet est une instance d'un enfant-classe de cette classe.


Par exemple, cette portion de code :

class ClassA {}
class ClassB extends ClassA {}

$a = new ClassB();
if ($a instanceof ClassA) {
    echo '$a is an instanceof ClassA<br />';
}
if ($a instanceof ClassB) {
    echo '$a is an instanceof ClassB<br />';
}

Vous obtenez ce résultat :

$a is an instanceof ClassA
$a is an instanceof ClassB

$a, en quelque sorte, est une instance de l' ClassA, comme ClassB est un enfant de la classe d' ClassA.

Et, bien sûr, $a est aussi une instance d' ClassB - voir la ligne où il est instanciée.

4voto

middaparka Points 33832

Vous ne pouvez pas vérifier la valeur de retour elle-même, mais vous pouvez vérifier la classe renvoyée à l'aide de ' instanceof '. (Sur une base similaire, vous pouvez trouver ' get_class ' utile.)

3voto

Pekka 웃 Points 249607
 if ($object instanceof classname)
 ....
 

Manuel: Classes et objets en PHP5

3voto

Emil Vikström Points 42251

Vous pouvez utiliser l'opérateur instanceof ou la fonction is_a .

is_a est utile si vous souhaitez passer une chaîne portant le nom de la classe (dans une base de code plus dynamique).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X