Как сравнить два объекта разных экземпляров класса в php?

Пользователь

от rodger.botsford , в категории: PHP , 7 месяцев назад

Как сравнить два объекта разных экземпляров класса в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от raina , 7 месяцев назад

@rodger.botsford 

Для сравнения двух объектов разных экземпляров класса в PHP можно использовать операторы сравнения "==" и "===".


Оператор "==" сравнивает значения объектов, проверяя, являются ли они равными. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class MyClass {
    public $value;
}

$obj1 = new MyClass();
$obj1->value = 5;

$obj2 = new MyClass();
$obj2->value = 5;

if ($obj1 == $obj2) {
    echo "Объекты равны";
} else {
    echo "Объекты не равны";
}


В данном случае, объекты $obj1 и $obj2 сравниваются по значению свойства "value". Результатом будет "Объекты равны", так как значение "value" у обоих объектов равно 5.


Оператор "===" сравнивает объекты не только по значению, но и по типу данных. Например:

1
2
3
4
5
if ($obj1 === $obj2) {
    echo "Объекты равны";
} else {
    echo "Объекты не равны";
}


В данном случае, так как $obj1 и $obj2 являются разными экземплярами класса MyClass, результатом будет "Объекты не равны", даже если их значения одинаковые.


Также можно использовать методы equals() или compareTo() для сравнения объектов внутри класса, если они были реализованы в нем. Это позволяет определить свою логику сравнения. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class MyClass {
    public $value;

    public function equals($other) {
        return $this->value == $other->value;
    }
}

$obj1 = new MyClass();
$obj1->value = 5;

$obj2 = new MyClass();
$obj2->value = 5;

if ($obj1->equals($obj2)) {
    echo "Объекты равны";
} else {
    echo "Объекты не равны";
}


В данном случае метод equals() сравнивает объекты $obj1 и $obj2 по значению свойства "value". Результатом будет "Объекты равны", так как значение "value" у обоих объектов равно 5.