30
loading...
This website collects cookies to deliver better user experience
public function getCounter(): int
{
$this->counter++;
return $this->counter;
}
public function getCounter(): int
{
return $this->counter;
}
public function increaseCounter(): void
{
$this->counter++;
}
public function createUser(array $userData): int {
$id = $this->userRepository->create($userData);
return $id;
}
public function createUser(UUID $id, array $userData): int {
$this->userRepository->create($id, $userData);
}
class CreateUserCommand {
private UUID $id;
private string $email;
private string $password;
public function __construct(UUID $id, string $email, string $password) {
// Validation
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new \InvalidArgumentException("Email $email is not valid");
}
if(!strlen($password) >= 8) {
throw new \InvalidArgumentException("Password should be longer or equal than 8 characters.");
}
$this->id = $id;
$this->email = $email;
$this->password = $password;
}
}
class CreateUserCommandHandler {
private UserRepository $userRepository;
public function __construct(UserRepository $userRepository) {
$this->userRepository = $userRepository;
}
public function handle(CreateUserCommand $command): void
{
// More validation
if($this->userRepository->has($command->id()) {
throw new \InvalidArgumentException("A user with the provided id already exists.");
}
$this->userRepository->save($command->id(), $command->email, $command->password);
}
}
$this->commandBus->handle($command);