我正在尽我所能来创建一个Web应用程序来熟悉DDD和ValueObjects。到目前为止,一切工作正常,我只是问自己,如果我正确实施我的价值对象。这是我目前的状态(代码非必要的部分剥离):ddd - 我的ValueObject实现是否正确?
class User {
private $id;
/**
* @var Credentials
*/
public $credentials;
public function getId() { return $this->id; }
}
class Credentials {
private $username;
private $password;
public function __construct($username, $password) { // no need to detail }
public function changePassword($newPassword) {
return new self($this->username, $newPassword);
}
}
所以每当我想更新我的用户的密码,我要做$user->credentials = $user->credentials->changePassword("newPassword");
这是正确的吗?我应该为我的User类的$credentials
属性创建一个getter和setter?我应该将changePassword()
方法放在User类中吗?
任何帮助,非常感谢!
好吧,现在看来我更清楚了。我将在我的User类中创建一个changePassword()方法,然后使该属性保持私有状态,这将使代码更加美观,易于阅读。非常感谢 ! – Lucio