Question

Je voudrais modéliser un Address comme objet de valeur. Comme c'est une bonne pratique pour le rendre immuable, j'ai choisi de ne fournir aucun setter, qui pourrait permettre de le modifier plus tard.

Une approche commune consiste à transmettre les données au constructeur; Cependant, lorsque l'objet de valeur est assez grand, cela peut devenir assez gonflé:

class Address {
    public function __construct(
        Point $location,
        $houseNumber,
        $streetName,
        $postcode,
        $poBox,
        $city,
        $region,
        $country) {
        // ...
    }
}

Une autre approche devrait être de fournir les arguments en tant que tableau, résultant en un constructeur propre, mais cela pourrait gâcher l'implémentation du constructeur:

class Address {
    public function __construct(array $parts) {
        if (! isset($parts['location']) || ! $location instanceof Point) {
            throw new Exception('The location is required');
        }
        $this->location = $location;
        // ...
        if (isset($parts['poBox'])) {
            $this->poBox = $parts['poBox'];
        }
        // ...
    }
}

Cela me semble aussi un peu naturel.

Des conseils sur la façon d'implémenter correctement un objet assez grande valeur?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top