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?
Réponses
Trop de publicités?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.
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.)
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).