08-09-2015, 08:22 PM
C'est ça.
Le Value Object force à créer 2 objets distincts pour 2 entités (personnages par exemple) qui auraient les mêmes attributs (adresse), afin justement de ne pas avoir de répercussions indésirées, comme par exemple :
Le Value Object force à créer 2 objets distincts pour 2 entités (personnages par exemple) qui auraient les mêmes attributs (adresse), afin justement de ne pas avoir de répercussions indésirées, comme par exemple :
Code PHP :
<?php
class Adress
{
public $value;
public function __construct($value)
{
$this->value = $value;
}
}
class Person
{
public $adress;
}
$adress = new Adress('44 route de la mairie');
$bob = new Person();
$jeanne = new Person();
$bob->adress = $adress;
$jeanne->adress = $bob->adress;
$bob->adress->value = '5 Rue de Jean Bobine';
echo $jeanne->adress->value;
// 5 Rue de Jean Bobine
Ici on donne à Bob et Jeanne la même adresse, mais si Bob déménage, Jeanne suit..
En supprimant la possibilité de modifier l'adresse de Bob (setter sur la value), on oblige à créer un nouvel objet adress pour déménager Bob. Et là, Jeanne ne quitte plus les lieux, même si on a partagé la même adress pour les 2