Aby umieścić to w kontekście, w wielu językach OO, obiekty są porównywane przez ich tożsamość. W Pseudokod:
bar = new Foo
baz = new Foo
bar == baz // false
Chociaż oba obiekty są w zasadzie takie same, jeśli tylko spojrzeć na ich wartości, nie są one uznawane za identyczne, ponieważ są osobne instancje. Aby wykazać, że:
bar = new Foo
baz = bar
bar == baz // true
Teraz:
W informatyce obiekt wartością jest mały prosty przedmiot, jak pieniądze lub zakresu dat, którego równość nie jest oparty na tożsamości.
http://en.wikipedia.org/wiki/Value_object
Byłby to demonstracja „obiekty wartość”:
address1 = new Address('Main street 42')
address2 = new Address('Main street 42')
address1 == address2 // true
ponieważ wartości są takie same, oba obiekty są uznawane za równe, nawet jeśli są one oddzielne instancje.
PHP nie ma osobnej koncepcji "obiektów wartości", ma tylko jeden typ obiektu. Operator porównania może jednak rozróżnić:
Podczas korzystania z operatora porównania (==) zmienne obiektów są porównywane w prosty sposób, a mianowicie: dwie instancje obiektów są równe, jeśli mają te same atrybuty i wartości, i są instancjami tej samej klasy.
http://www.php.net/manual/en/language.oop5.object-comparison.php
Np .:
$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');
$address1 == $address2; // true equal...
$address1 === $address2; // false ...but not identical
Nie wszystko w PHP jest obiektem. –
Zdaję sobie z tego sprawę. Próbuję zrozumieć kilka tutoriali, które czytałem, które mówią o Value Objects. – johnnietheblack
Ale nie wszystko w PHP jest obiektem, co powoduje, że porównanie jest nieważne. –