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

青灯夜游
Libérer: 2023-04-05 14:08:01
original
3398 Les gens l'ont consulté

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 )
Copier après la connexion

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";  
}  
    
?>
Copier après la connexion

Sortie :

Yes
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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";  
}  
?>
Copier après la connexion

Sortie :

Yes
Copier après la connexion
Copier après la connexion

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 )
Copier après la connexion

● 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);
Copier après la connexion

instanceof example :

//对象实例      
$object instanceof $otherObject; 
//字符串类名
$object instanceof $string;
//类的标识符
$object instanceof ClassName;
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal