Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is an example of a Value Object in PHP?

I have read plenty of C# examples of Value Objects, and I understand that it is an "object" that is identified by it's values. If a value changes, the object is "new".

However, that doesn't seem to make sense when it comes to PHP...either that, or I'm just not making the connection.

Is a Value Object just a string?

like image 912
johnnietheblack Avatar asked Mar 23 '12 06:03

johnnietheblack


1 Answers

To put this into context, in many OO languages, objects are compared by their identity. In pseudocode:

bar = new Foo
baz = new Foo

bar == baz  // false

Even though both objects are basically the same if you just look at their values, they're not considered to be identical, because they are separate instances. To demonstrate:

bar = new Foo
baz = bar

bar == baz  // true

Now:

In computer science, a value object is a small simple object, like money or a date range, whose equality isn't based on identity.

http://en.wikipedia.org/wiki/Value_object

This would be a demonstration of "value objects":

address1 = new Address('Main street 42')
address2 = new Address('Main street 42')

address1 == address2  // true

Because the values are the same, both objects are considered equal, even if they're separate instances.

PHP does not have a separate concept of "value objects", it only has one type of object. Its comparison operator can make that distinction though:

When using the comparison operator (==), object variables are compared in a simple manner, namely: Two object instances are equal if they have the same attributes and values, and are instances of the same class.

http://www.php.net/manual/en/language.oop5.object-comparison.php

E.g.:

$address1 = new Address('Main street 42');
$address2 = new Address('Main street 42');

$address1 == $address2;  // true     equal...
$address1 === $address2;  // false   ...but not identical
like image 92
deceze Avatar answered Nov 11 '22 05:11

deceze