Para poner esto en contexto, en muchos lenguajes OO, los objetos se comparan por su identidad . En pseudocódigo:
bar = new Foo
baz = new Foo
bar == baz // false
A pesar de que ambos objetos son básicamente lo mismo si sólo se observa en sus valores , no son considerados como iguales, porque son casos separados. Para demostrar:
bar = new Foo
baz = bar
bar == baz // true
Ahora:
En informática, un objeto de valor es un simple objeto pequeño, como dinero o un intervalo de fechas, que la igualdad no se basa en la identidad.
http://en.wikipedia.org/wiki/Value_object
esto sería una demostración de "objetos de valor":
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')
address1 == address2 // true
Debido a que los valores son los mismos, ambos objetos se consideran iguales, incluso si son instancias independientes.
PHP no tiene un concepto separado de "objetos de valor", solo tiene un tipo de objeto. Sin embargo, su operador de comparación puede hacer esa distinción:
Al utilizar el operador de comparación (==), las variables de objeto se comparan de manera simple, a saber: dos instancias de objetos son iguales si tienen los mismos atributos y valores, y son instancias de la misma clase.
http://www.php.net/manual/en/language.oop5.object-comparison.php
ej .:
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');
$address1 == $address2; // true equal...
$address1 === $address2; // false ...but not identical
No todo en PHP es un objeto. –
Me doy cuenta de eso. Solo intento dar sentido a algunos tutoriales que he estado leyendo que hablan de Value Objects. – johnnietheblack
Pero no todo en PHP es un objeto, lo que hace que la comparación no sea válida. –