'id', 'role' => 'role', 'email' => 'email', 'username' => 'username', 'password' => 'password' ]; } public function initialize() { $this->hasMany('id', Project::class, 'user_id', [ 'alias' => 'Projects', ]); } public function getUsername() { return $this->username; } public function setUsername($username) { /** validation: unique, non-empty, 4+ letters **/ $same_user = User::find(["username = '".$username."'"]); if (isset($same_user[0]) && !empty($same_user[0]->username)) { $msg = 'Post-data is invalid, trying to use non-unique value `'.$username.'` of `username`'; throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['username' => $username]); } elseif (empty($username)) { $msg = 'Post-data is invalid, trying to use empty value of `username`'; throw new Exception(ErrorCodes::DATA_NOT_FOUND, $msg, ['username' => $username]); } elseif (strlen($username) < 4) { $msg = 'Post-data is invalid, value of `username` should be more than 4 letters'; throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['username' => $username]); } /** ---------------------------------------- **/ $this->username = $username; } public function getEmail() { return $this->email; } public function setEmail($email) { /** validation: FILTER_VALIDATE_EMAIL **/ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $msg = 'Post-data is invalid, bad email value'; throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['email' => $email]); } /** ---------- */ $this->email = $email; } public function getRole() { $service = new Service(); return $service->getRole(); } public function setRole($role) { /** validation: constant value **/ if (!in_array($role, AclRoles::ALL_ROLES)) { $msg = 'Post-data is invalid, bad `role` value'; throw new Exception(ErrorCodes::POST_DATA_INVALID, $msg, ['role' => $role]); } /** -------------------------- **/ $this->role = $role; } }