Maison  >  Article  >  développement back-end  >  Quelle est la différence entre la fonction is_a() et instanceof en PHP ?

Quelle est la différence entre la fonction is_a() et instanceof en PHP ?

青灯夜游
青灯夜游original
2019-03-06 10:06:523314parcourir

Les fonctions de la fonction is_a() et de l'opérateur instanceof en PHP sont similaires, alors quelles sont les différences entre elles ? L'article suivant vous donnera une brève compréhension de la fonction is_a() et de l'instanceof, et présentera la différence entre la fonction is_a() et l'instanceof. J'espère qu'il vous sera utile. [Recommandation du didacticiel vidéo : Tutoriel PHP]

Fonction PHP is_a()

La fonction is_a() est une fonction intégrée à PHP qui vérifie si un objet donné appartient à une classe donnée ; elle vérifie également si la classe donnée est l'une des classes parentes de l'objet donné.

Syntaxe de base :

is_a( $object, $class_name, $allow_string )

Paramètres : La fonction is_a() peut accepter les trois paramètres suivants

QuantityObject : Utilisé pour enregistrer les objets de test.

● class_name : utilisé pour enregistrer le nom de la classe.

●allow_string : Si la valeur définie est False, les noms de classes de chaînes ne peuvent pas être utilisés comme objets.

Valeur de retour : Si l'objet appartient à la classe donnée, ou si cette classe est l'une de ses classes parentes, la fonction is_a() renvoie True, sinon elle renvoie une valeur False.

Apprenons la fonction is_a() à travers des exemples de code.

<?php  
class hello {  
    var $store = &#39;Hello PHP!&#39;;  
}  
    
$PHP= new hello();  
    
// 检查$PHP是否是hello类的对象
if (is_a($PHP, &#39;hello&#39;)) {  
    echo "Yes";  
}  
    
?>

Sortie :

Yes

Instance d'opérateur PHP

Utilisez l'instance d'opérateur en PHP pour savoir si l'objet est une instance instanciée de la classe.

Syntaxe de base :

$a instanceof MyClass

Opérandes : L'opérateur instanceof contient les deux opérandes suivants

Quantity $ a : Indique l'objet.

● MyClass : Indique un nom de classe.

Valeur de retour : True si l'objet appartient à la classe donnée, ou a cette classe comme l'une de ses classes parentes, sinon il renvoie une valeur False.

Apprenons l'opérateur instanceof à travers des exemples de code.

<?php  
class hello {  
    var $store = &#39;Hello PHP!&#39;;  
}  
    
$PHP= new hello();  
    
// 检查$PHP是否是hello类的对象
if ($PHP instanceof hello) {  
    echo "Yes";  
}  
?>

Sortie :

Yes

Différence entre la fonction is_a() et l'opérateur instanceof

● is_a( ) est une fonction et instanceof est une structure de langage. La fonction is_a() sera nettement plus lente car elle aura toute la surcharge nécessaire à l'exécution d'un appel de fonction.

●Dans le cas des rappels de fonctions (tels que array_map), comme instanceof n'est pas une fonction, c'est une construction de langage, elle ne peut donc pas être utilisée comme rappel. Cependant, les rappels peuvent être utilisés dans la fonction is_a().

●Le temps d'utilisation du nom de classe direct dans InstanceOf est plus court que celui de la fonction is_a().

Exemple :

//语法短(比较)
$a instanceof MyClass
is_a( $a, MyClass::class )

● is_a() est une fonction qui prend un objet comme paramètre 1 et une chaîne comme paramètre 2, tandis que instanceof prend un objet comme paramètre 1, et vous pouvez transmettez un nom de classe, une instance d'objet ou un identifiant de classe (nom de classe sans guillemets) comme paramètre 2.

Exemple de is_a() :

//只有这样才能调用它
is_a($object,$string);

instanceof example :

//对象实例      
$object instanceof $otherObject; 
//字符串类名
$object instanceof $string;
//类的标识符
$object instanceof ClassName;

C'est tout pour cet article J'espère que l'ensemble du contenu sera utile à l'étude de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn