PHP中的值对象的示例是什么?

时间:2012-03-23 06:06:36

标签: php value-objects

我已经阅读了很多值对象的C#示例,我知道它是一个由它的值标识的“对象”。如果值更改,则对象为“new”。

然而,当涉及到PHP时,这似乎没有意义......或者我只是没有建立连接。

Value Object只是一个字符串吗?

2 个答案:

答案 0 :(得分:25)

为了将其置于上下文中,在许多OO语言中,对象通过其身份进行比较。在伪代码中:

bar = new Foo
baz = new Foo

bar == baz  // false

即使两个对象基本相同,只要查看它们的,它们就不会被认为是相同的,因为它们是不同的实例。为了证明:

bar = new Foo
baz = bar

bar == baz  // true

现在:

  

在计算机科学中,价值对象是一个小的简单对象,如金钱或日期范围,其等同性不是基于身份。

     

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

这将是“价值对象”的演示:

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

E.g:

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

$address1 == $address2;  // true     equal...
$address1 === $address2;  // false   ...but not identical

答案 1 :(得分:0)

PHP曾经有过价值对象,但在PHP4中又回来了。见http://3v4l.org/ghI8G