## Comparing objects in Php

In this tutorial we are going to be looking at how to compare objects in PHP, first using the comparison operator (==) and then using identity operator (===).

As we shall see, each of the two operators behave differently based whether:

• The objects are the same instance or different instances of a class
• The object properties and their values are the same or not.

### Object comparison using the equality operator ==

The "equal to" operator (==) compares if objects are holding the same property values and are instances of the same class. For example:

#### Example 1

<?php

class Spaceship {
public $velocity = 23; public$name = "HMS Sytech Royal";
public $enemy = false; }$command_ship = new Spaceship;
$service_ship = new Spaceship;$result = ($command_ship ==$service_ship);

var_dump($result); //> bool(true) ?>  In the example above, the comparison returned true because $command_ship and $service_ship are instances of the same class and their properties hold the same values. #### Example 2 <?php class Spaceship { public$velocity = 23;
public $name = "HMS Sytech Royal"; public$enemy = false;

}

$command_ship = new Spaceship;$command_ship = "HMS Sytech Zimbabwe";

$service_ship = new Spaceship;$result = ($command_ship ==$service_ship);

var_dump($result); //> bool(false) ?>  This time, the comparison returned false because, even though $command_ship and $service_ship are instances of the same class, we changed the name property of object $command_ship and their properties no longer hold the same values. Changing the value of an instance variable in one object does not reflect in the other.

### Object comparison using the strict equality operator ===

The "strictly equal to" operator (===) returns true only if the variables refer to the same instance of the same class. For example:

#### Example 1

<?php

class Spaceship {
public $velocity = 23; public$name = "HMS Sytech Royal";
public $enemy = false; }$command_ship = new Spaceship;
$service_ship = new Spaceship;$result = ($command_ship ===$service_ship);

var_dump($result); //> bool(false) ?>  The comparison returned false because the objects are not the same instance of the same class. #### Example 2 <?php class Spaceship { public$velocity = 23;
public $name = "HMS Sytech Royal"; public$enemy = false;

}

$command_ship = new Spaceship;$service_ship = $command_ship;$result = ($command_ship ===$service_ship);

var_dump($result); //> bool(true) ?>  The comparison returned true because the objects are the same instance of the same class, since we literally assigned the reference of $command_ship to \$service_ship.