Maison  >  Article  >  développement back-end  >  Explication détaillée de l'utilisation de la comparaison d'objets en PHP orienté objet

Explication détaillée de l'utilisation de la comparaison d'objets en PHP orienté objet

巴扎黑
巴扎黑original
2017-04-17 14:38:491638parcourir

Grâce au clonage, nous pouvons comprendre la signification de $a = $b et $a = clone $b. Mais dans les applications pratiques, nous devons toujours déterminer si la relation entre deux objets est un clone ou une référence. Cela peut être fait en utilisant les opérateurs de comparaison "==" et "===".

Opérateurs "==" et "==="

Lors de l'utilisation de la comparaison opérateur (==) pour comparer deux variables d'objet Quand Et si vous utilisez l'opérateur congruent (===) , ces deux variables d'objet doivent pointer vers la même instance d'un certain type (c'est-à-dire le même objet).

Regardons un exemple ci-dessous :

Exemple d'analyse :

<?php
header("content-type:text/html;charset=utf-8");
class Dog{
public $type;
public $age;
function __construct($type,$age)
{
$this->type = $type;
$this->age = $age;
}
}
$dog1 = new Dog(&#39;二哈&#39;,&#39;2&#39;);
$dog2 = new Dog(&#39;二哈&#39;,&#39;2&#39;);
if($dog1 == $dog2){
echo &#39;<br/> $dog1 == $dog2&#39;;
}
if($dog1 === $dog2){
echo &#39;<br/>$dog1 === $dog2 &#39;;
}else{
echo &#39;<br/>他们不能全等&#39;;
}
echo &#39;<hr/>&#39;;
$dog3 = $dog1;
if($dog1 == $dog3){
echo &#39;<br/> $dog1 == $dog3&#39;;
}
if($dog1 === $dog3){
echo &#39;<br/>$dog1 === $dog3 &#39;;
}else{
echo &#39;<br/>他们不能全等&#39;;
}

Nous créons d'abord une classe de chien et définissons les types d'attributs dans la classe et l'âge, créer un constructeur. Instanciez ensuite deux classes identiques, $dog1 et $dog2. Comparez ensuite les deux classes instanciées. Utilisez d'abord l'opérateur de comparaison "==". Nous avons évoqué plus haut la signification de ce symbole : lors de l'utilisation de l'opérateur de comparaison (==) pour comparer deux variables d'objet, le principe de comparaison est le suivant : si les attributs et valeurs d'attribut des deux objets sont égaux, et que les deux objets sont la même instance de la classe, alors les deux variables objet sont égales. Tout d'abord, il est jugé que les attributs et les valeurs d'attribut de $dog1 et $dog2 sont égaux, et deuxièmement, ils sont tous deux des résultats d'instanciation de la même classe de type Dog, alors le résultat est $dog1= =$chien2. Mais le prochain jugement $dog1===$dog2 est-il égal ? Jetons un coup d'œil aux conditions pour que l'opérateur "===" soit maintenu : si vous utilisez l'opérateur de congruence (===), les deux variables objet doivent pointer vers la même instance d'un certain type (c'est-à-dire le même objet). Cela ne peut être vrai que lorsque les valeurs comparées des deux côtés de l'opérateur "===" sont le même objet. $dog1 et $dog2 sont deux instances, pas identiques, donc leur "===" ne peut pas être établi. Nous donnons une condition, $dog3 = $dog1, et utilisons la même méthode pour comparer et juger les objets pour voir si elle est vraie. Vous pouvez exécuter l'exemple ci-dessus pour voir les résultats.

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