PHP對象的比較
阿新 • • 發佈:2017-12-17
php 面對對象 對象 比較 克隆 對象比較:
相等:當使用比較運算符(==)比較兩個對象變量時,比較的原則是:
1.如果兩個對象的屬性和屬性值 都相等,
2.而且兩個對象是同一個類的實例(instance of),那麽這兩個對象變量相等。
全等:而如果使用全等運算符(===),這兩個對象變量一定要指向某個類的同一個實例(即同一個對象,說明對象標誌符都完全一樣)。
相等:當使用比較運算符(==)比較兩個對象變量時,比較的原則是:
1.如果兩個對象的屬性和屬性值 都相等,
2.而且兩個對象是同一個類的實例(instance of),那麽這兩個對象變量相等。
全等:而如果使用全等運算符(===),這兩個對象變量一定要指向某個類的同一個實例(即同一個對象,說明對象標誌符都完全一樣)。
class Sheep { public $name; protected $food; public function __construct(string $name, string $food) { $this->name = $name; $this->food = $food; } public function __toString() { return serialize($this); } public function __clone() { echo '對象被克隆' . PHP_EOL; } } $sheep1 = new Sheep('喜洋洋', '肉');//PHP Recoverable fatal error: Object of class Sheep could not be converted to string echo $sheep1; /** * * * 相等:當使用比較運算符(==)比較兩個對象變量時,比較的原則是:如果兩個對象的屬性和屬性值 都相等, * 而且兩個對象是同一個類的實例,那麽這兩個對象變量相等。 * * 全等:而如果使用全等運算符(===),這兩個對象變量一定要指向某個類的同一個實例(即同一個對象)。 * */ $sheep1 = new Sheep('喜洋洋', '肉'); $sheep2 = new Sheep('喜洋洋', '肉'); $sheep3 = clone $sheep1; //分析:三個對象都是Sheep類的實例,且對象的屬性和值都完全一樣 if ($sheep1 == $sheep2 && $sheep2 == $sheep3) { echo '$sheep1 == $sheep2 == $sheep3' . PHP_EOL; } $sheep4 = $sheep1; //對象的引用傳遞(傳遞的是對象標識符) if ($sheep4 === $sheep1) { echo '$sheep4 === $sheep1' . PHP_EOL; }
PHP對象的比較