Comparing Objects in PHP

Или каква е разликата между comparison operator (==) и identity operator (===)

Comparison operator дава true, когато „Two object instances are equal if they have the same attributes and values (values are compared with ==), and are instances of the same class.
Демек, когато данновата им част (пропъртитата) са еднакви, и са различни обекти, но от един и същи клас. А както знем класът по принцип е един вид тип. И също знаем, че по принцип Comparison operator (двойното равно) не се интересува от типът на сравняваните променливи, ако са скаларни. Но очевидно, и ако са обекти.

Демек това ще върне true.

var_dump(123 == '123');

Но това ще върне false.

var_dump(123 === '123');

Identity operator от друга стана ще върне true само ако двата обекта са всъщност една и съща инстанция, демек, когато: When using the identity operator (===), object variables are identical if and only if they refer to the same instance of the same class.

Демек, едното – ако са различни обекти, но от един клас, и с еднакви properties, другото – когато са един и същ обект.

Литература:

https://www.php.net/manual/en/language.oop5.object-comparison.php