クローン作成を通じて、$a = $b および $a = clone $b が何を意味するかを理解できます。ただし、実際のアプリケーションでは、2 つのオブジェクト間の関係がクローンであるか参照であるかを判断する必要があります。これは、比較演算子「==」と「===」を使用して行うことができます。
演算子 "==" と "==="
比較演算子 (==) を使用して 2 つのオブジェクト変数を比較する場合、比較の原則は次のとおりです:属性値が等しく、2 つのオブジェクトが同じクラスのインスタンスである場合、2 つのオブジェクト変数は等しくなります そして、合同の
演算子 (===) を使用する場合、2 つのオブジェクト変数は等しくなければなりません。各型の特定の同じインスタンス (つまり、同じオブジェクト) を指します。以下の例を見てみましょう:
<?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('二哈','2'); $dog2 = new Dog('二哈','2'); if($dog1 == $dog2){ echo '<br/> $dog1 == $dog2'; } if($dog1 === $dog2){ echo '<br/>$dog1 === $dog2 '; }else{ echo '<br/>他们不能全等'; } echo '<hr/>'; $dog3 = $dog1; if($dog1 == $dog3){ echo '<br/> $dog1 == $dog3'; } if($dog1 === $dog3){ echo '<br/>$dog1 === $dog3 '; }else{ echo '<br/>他们不能全等'; }
分析例:
まず、犬のクラスを作成し、そのクラスで属性の型と年齢を定義し、コンストラクターを作成します。次に、2 つの同一のクラス $dog1 と $dog2 をインスタンス化します。次に、インスタンス化された 2 つのクラスを比較します。まず比較演算子「==」を使用します。この記号の意味については上で説明しました。比較演算子 (==) を使用して 2 つのオブジェクト変数を比較する場合、比較の原則は次のとおりです。2 つのオブジェクトの属性と属性値が等しいかどうか、および 2 つのオブジェクトの属性と属性値が等しいかどうかオブジェクトがクラスの同じインスタンスである場合、2 つのオブジェクト変数は等しくなります。まず、$dog1 と $dog2 の属性と属性値が等しいと判断され、次に、両方とも同じ Dog クラスのインスタンス化結果であると判断され、結果は $dog1==$ となります。犬2。しかし、次の判断 $dog1===$dog2 は等しいでしょうか?演算子「===」が成立するための条件を見てみましょう。合同演算子 (===) を使用する場合、2 つのオブジェクト変数は特定の型の同じインスタンス (つまり、同じインスタンス) を指している必要があります。物体)。これは、演算子「===」の両側で比較される値が同じオブジェクトである場合にのみ当てはまります。 $dog1 と $dog2 は 2 つのインスタンスであり、同じではないため、「===」は確立できません。 $dog3 = $dog1 という条件を与え、同じ方法を使用してオブジェクトを比較および判断し、それが真かどうかを確認します。
上記の例を実行して結果を確認できます。以上がPHPオブジェクト指向におけるオブジェクト比較の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。