Per mettere questo in contesto, in molte lingue OO, gli oggetti vengono confrontati dall'identità . In pseudocodice:
bar = new Foo
baz = new Foo
bar == baz // false
Anche se entrambi gli oggetti sono fondamentalmente le stesse se si guarda ai loro valori , non sono considerati identici, perché sono istanze separate. Per dimostrare:
bar = new Foo
baz = bar
bar == baz // true
Ora:
In informatica, un oggetto di valore è un piccolo oggetto semplice, come il denaro o di un intervallo di date, di cui l'uguaglianza non è basata su identità.
http://en.wikipedia.org/wiki/Value_object
questo sarebbe una dimostrazione di "oggetti di valore":
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')
address1 == address2 // true
Poiché i valori sono gli stessi, entrambi gli oggetti sono considerati uguali, anche se sono istanze separate.
PHP non ha un concetto separato di "oggetti valore", ha solo un tipo di oggetto. L'operatore di confronto può fare questa distinzione:
Quando si utilizza l'operatore di confronto (==), le variabili oggetto vengono confrontate in un modo semplice, vale a dire: Due istanze di oggetto sono uguali se hanno gli stessi attributi e valori, e sono esempi della stessa classe.
http://www.php.net/manual/en/language.oop5.object-comparison.php
Es .:
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');
$address1 == $address2; // true equal...
$address1 === $address2; // false ...but not identical
Non tutto in PHP è un oggetto. –
Lo capisco. Sto solo cercando di dare un senso ad alcuni tutorial che ho letto che parlano di Value Objects. – johnnietheblack
Ma non tutto in PHP è un oggetto, il che rende il confronto non valido. –