Чтобы поместить это в контекст, во многих языках ОО объекты сравниваются по их идентичности .В псевдокоде:
bar = new Foo
baz = new Foo
bar == baz // false
Хотя оба объекта в основном одинаковы, если вы просто посмотрите на их значения , они не считаются идентичными, поскольку они являются отдельными экземплярами.Для демонстрации:
bar = new Foo
baz = bar
bar == baz // true
Сейчас:
В информатике ценностный объект - это небольшой простой объект, такой как деньги или диапазон дат, равенство которого не основано наидентичность.
http://en.wikipedia.org/wiki/Value_object
Это будет демонстрация «объектов значений»:
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')
address1 == address2 // true
Поскольку значения одинаковы, оба объектасчитается равным, даже если они являются отдельными экземплярами.
PHP не имеет отдельного понятия «объекты-значения», он имеет только один тип объекта.Его оператор сравнения может сделать это различие, хотя:
При использовании оператора сравнения (==) переменные объекта сравниваются простым способом, а именно: два экземпляра объекта равны, если они имеют одинаковые атрибутыи значения, и являются экземплярами одного и того же класса.
http://www.php.net/manual/en/language.oop5.object-comparison.php
Например:
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');
$address1 == $address2; // true equal...
$address1 === $address2; // false ...but not identical