透過克隆,我們可以明白$a = $b和$a = clone $b所表示的意思了。但在實際應用中,我們還是需要判斷兩個物件之間的關係是複製還是引用,這是可以使用比較運算子「==」和「===」。
運算子「==」和「===」
當使用比較運算子(==)比較兩個物件變數時,比較的原則是:如果兩個物件的屬性個屬性值都相等,而且兩個物件是同一個類別的實例,那麼這兩個物件變數相等;
#而如果使用全等運算子(===),這兩個物件變數一定要指向某各類別的同一個實例(即同一個物件)。
下面我們看個實例:
<?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/>他们不能全等'; }
實例解析:
首先我們建立了一個狗類,在類別中定義屬性種類和年齡,建立構造函數。接著實例化兩個一模一樣類,$dog1和$dog2。然後把這兩個實例化的類別做比較。首先用比較運算子「==」。上面我們說到過這個符號的意思:當使用比較運算子(==)比較兩個物件變數時,比較的原則是:如果兩個物件的屬性個屬性值都相等,而兩個物件是同一個類別的實例,那麼這兩個物件變數相等。首先判斷,$dog1和$dog2的屬性和屬性值都是相等的,其次他兩個都是同一個類別Dog的類別的實例化結果,那麼結果就是,$dog1==$dog2。但接下來的判斷$dog1===$dog2這個相等嗎?我們看下運算子「===」成立的條件:而如果使用全等運算子(===),這兩個物件變數一定要指向某各類別的同一個實例(即同一個物件)。只有當運算子「===」兩邊比較的值是同一個物件的時候,才能成立。 $dog1和$dog2是兩個實例,不是同一個,所以他們「===」不能成立。我們給個條件,$dog3 = $dog1,用同樣的方法去進行對象的比較和判斷,看看是否成立。
大家可以講上述的實例運行查看結果。
以上是php物件導向之物件比較用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!