Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung des Objektvergleichs in PHP objektorientiert

Detaillierte Erläuterung der Verwendung des Objektvergleichs in PHP objektorientiert

巴扎黑
巴扎黑Original
2017-04-17 14:38:491638Durchsuche

Durch Klonen können wir die Bedeutung von $a = $b und $a = clone $b verstehen. In praktischen Anwendungen müssen wir jedoch noch feststellen, ob es sich bei der Beziehung zwischen zwei Objekten um einen Klon oder eine Referenz handelt. Dies kann mithilfe der Vergleichsoperatoren „==“ und „===“ erfolgen.

Operatoren „==" und „==="

Bei Verwendung des Vergleichsoperators (==) zum Vergleichen zweier Objektvariablen. Wann Und Wenn Sie den kongruenten -Operator (===) verwenden, müssen diese beiden Objektvariablen auf dieselbe Instanz eines bestimmten Typs (d. h. dasselbe Objekt) verweisen.

Sehen wir uns unten ein Beispiel an:

Beispielanalyse:

<?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;;
}

Zuerst erstellen wir eine Hundeklasse und definieren Attributtypen in der Klasse und Alter, Konstruktor erstellen. Instanziieren Sie dann zwei identische Klassen, $dog1 und $dog2. Vergleichen Sie dann die beiden instanziierten Klassen. Verwenden Sie zunächst den Vergleichsoperator „==". Wir haben oben die Bedeutung dieses Symbols erwähnt: Wenn der Vergleichsoperator (==) zum Vergleichen zweier Objektvariablen verwendet wird, lautet das Vergleichsprinzip: Wenn die Attribute und Attributwerte der beiden Objekte gleich sind und die beiden Objekte gleich sind Sind die gleichen Instanzen der Klasse, dann sind die beiden Objektvariablen gleich. Erstens wird beurteilt, dass die Attribute und Attributwerte von $dog1 und $dog2 gleich sind, und zweitens handelt es sich bei beiden um Instanziierungsergebnisse derselben Dog-ähnlichen Klasse, dann lautet das Ergebnis $dog1==$ Hund2. Aber ist das nächste Urteil $dog1===$dog2 gleich? Werfen wir einen Blick auf die Bedingungen, unter denen der Operator „===“ gilt: Und wenn Sie den Kongruenzoperator (===) verwenden, müssen die beiden Objektvariablen auf dieselbe Instanz eines bestimmten Typs verweisen (d. h. auf die dasselbe Objekt). Dies kann nur dann zutreffen, wenn die auf beiden Seiten des Operators „===“ verglichenen Werte dasselbe Objekt sind. $dog1 und $dog2 sind zwei Instanzen, nicht identisch, daher kann ihr „===“ nicht ermittelt werden. Wir geben eine Bedingung an, $dog3 = $dog1, und verwenden dieselbe Methode, um Objekte zu vergleichen und zu beurteilen, um zu sehen, ob sie wahr ist. Sie können das obige Beispiel ausführen, um die Ergebnisse zu sehen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des Objektvergleichs in PHP objektorientiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn