Skip to content

re: Discarding setters VIEW POST

re: That's an awesome piece. However, I find that setters have a place in value objects where mutability is really essential. But in services setters a...

Thanks Oliver!

I'm curious, why do you think it's essential that value objects are mutable?

final class EmailAddress
    private $address;

    public function __construct(string $emailAddress)
        $this->address = $emailAddress;
    // ...

What benefits would we gain if this example was mutable? Or, would it make DateTime worse, if calling $dateTime->modify("+1 day") would return a new instance of DateTime instead of altering it's inner state?


Not in cases that setters and gettings will be valuable. In this case, using setters won't be of much importance. In the case that you want setters to be used, the emphasis on constructor injection is less as compared to settor injection.

code of conduct - report abuse