[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка уникальности сущности в рамках DDD
Страницы: 1, 2, 3, 4, 5
twin
Никак не мог отделаться я от мысли, что где то подобное видел, но гораздо проще. Вспомнил. Это на реестр чем то похоже.

Вобщем вот тоже самое без фабрики и рефлексии. Немного коряво, на коленке писал, но как ты говоришь - прототип. :)

final class Username
{
private $value;
private $checker;

public function __construct(UsernameAlreadyRegisteredCheckerInterface $checker)
{
$this->checker = $checker;
}

public function create(string $username): Username
{
if (empty($this->checker)) {
throw new \LogicException('Низя.');
}

if ('' === trim($username)) {
throw new \InvalidArgumentException();
}

if ($this->checker->checkIfUsernameAlreadyRegistered($username)) {
throw new \InvalidArgumentException();
}

$this->value = $username;
unset($this->checker);
return $this;
}

public function __toString(): string
{
return $this->value;
}
}


$checker = new UsernameAlreadyRegisteredChecker();
$username = new Username($checker);
$username->create('John');
var_dump((string)$username);


Основная фишка, если я правильно понял твою задумку, в том, что имя должно быть валидным объектом. Вроде так и есть.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.