Я прочитал много примеров C # объектов Value, и я понимаю, что это «объект», который идентифицируется его значениями. Если значение изменяется, объект является «новым».
Однако это не имеет смысла, когда дело доходит до PHP … либо это, либо я просто не подключаюсь.
Является ли объект Value только строкой?
Чтобы помещать это в контекст, во многих языках OO объекты сравниваются по их идентичности . В псевдокоде:
bar = new Foo baz = new Foo bar == baz // false
Хотя оба объекта в основном одинаковы, если вы просто смотрите на их значения , они не считаются идентичными, потому что они являются отдельными экземплярами. Демонстрировать:
bar = new Foo baz = bar bar == baz // true
Теперь:
В информатике объект ценности – это небольшой простой объект, например деньги или диапазон дат, чье равенство не основано на идентичности.
Это будет демонстрация «объектов ценности»:
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
PHP имел обыкновение иметь объекты ценности, но это было в PHP4. См. http://3v4l.org/ghI8G