DEV Community

Discussion on: Discarding setters

Collapse
 
aleksikauppila profile image
Aleksi Kauppila

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?

Collapse
 
olivermensahdev profile image
Oliver Mensah

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.