我正在盡我所能來創建一個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