Или каква е разликата между 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