From 9ce609acab0cee1c023e51cee1ac1cff6d96fda0 Mon Sep 17 00:00:00 2001 From: Override-6 Date: Wed, 25 Oct 2023 19:26:52 +0200 Subject: [PATCH] add documentation --- Documentation/data.puml | 13 +++++++----- src/Data/Account.php | 44 +++++++++++++++++++++++++++++++++++++--- src/Data/AccountUser.php | 8 +++----- src/Data/Member.php | 20 +++++++++++++----- src/Data/MemberRole.php | 5 +++++ src/Data/Team.php | 2 ++ src/Data/User.php | 14 +++++++++++++ 7 files changed, 88 insertions(+), 18 deletions(-) diff --git a/Documentation/data.puml b/Documentation/data.puml index 038a11a..90a7929 100755 --- a/Documentation/data.puml +++ b/Documentation/data.puml @@ -3,12 +3,14 @@ class Account { - email: String - phoneNumber: String + - id: int + setMailAddress(String) + getMailAddress(): String + getPhoneNumber(): String + setPhoneNumber(String) + getUser(): AccountUser + + getId(): int } Account --> "- user" AccountUser @@ -32,11 +34,12 @@ class AccountUser { AccountUser ..|> User class Member { - getUser(): User - getRole(): MemberRole + - userId: int + + + getUserId(): int + + getRole(): MemberRole } -Member --> "- user" User Member --> "- role" MemberRole enum MemberRole { @@ -60,9 +63,9 @@ Team --> "- mainColor" Color Team --> "- secondaryColor" Color class Color { - value: int + - value: int - getValue(): int + + getValue(): int } @enduml diff --git a/src/Data/Account.php b/src/Data/Account.php index bc82808..155f2ae 100755 --- a/src/Data/Account.php +++ b/src/Data/Account.php @@ -4,25 +4,53 @@ namespace App\Data; use http\Exception\InvalidArgumentException; +const PHONE_NUMBER_REGEXP = "\\+[0-9]+"; + +/** + * Base class of a user account. + * Contains the private information that we don't want + * to share to other users, or non-needed public information + */ class Account { + /** + * @var string $email account's mail address + */ private string $email; + /** + * @var string account's phone number. + * its format is specified by the {@link PHONE_NUMBER_REGEXP} constant + * + */ private string $phoneNumber; + + /** + * @var AccountUser account's public and shared information + */ private AccountUser $user; + + /** + * @var array account's teams + */ private array $teams; + /** + * @var int account's unique identifier + */ + private int $id; + /** * @param string $email * @param string $phoneNumber * @param AccountUser $user */ - public function __construct(string $email, string $phoneNumber, AccountUser $user, array $teams) { + public function __construct(string $email, string $phoneNumber, AccountUser $user, array $teams, int $id) { $this->email = $email; $this->phoneNumber = $phoneNumber; $this->user = $user; $this->teams = $teams; + $this->id = $id; } - /** * @return string */ @@ -51,11 +79,21 @@ class Account { * @param string $phoneNumber */ public function setPhoneNumber(string $phoneNumber): void { - if (!filter_var($phoneNumber, FILTER_VALIDATE_REGEXP, "\\+[0-9]+")) { + if (!filter_var($phoneNumber, FILTER_VALIDATE_REGEXP, PHONE_NUMBER_REGEXP)) { throw new InvalidArgumentException("Invalid phone number"); } $this->phoneNumber = $phoneNumber; } + public function getId(): int { + return $this->id; + } + + public function getTeams(): array { + return $this->teams; + } + public function getUser(): AccountUser { + return $this->user; + } } \ No newline at end of file diff --git a/src/Data/AccountUser.php b/src/Data/AccountUser.php index feed910..a825900 100755 --- a/src/Data/AccountUser.php +++ b/src/Data/AccountUser.php @@ -4,12 +4,14 @@ namespace App\Data; use http\Url; +/** + * This class implements the User and + */ class AccountUser implements User { private string $name; private Url $profilePicture; private int $age; private array $teams; - private int $id; /** * @param string $name @@ -52,8 +54,4 @@ class AccountUser implements User { return $this->teams; } - public function getId(): int { - return $this->id; - } - } \ No newline at end of file diff --git a/src/Data/Member.php b/src/Data/Member.php index b2844c3..91b09c4 100755 --- a/src/Data/Member.php +++ b/src/Data/Member.php @@ -2,15 +2,25 @@ namespace App\Data; +/** + * information about a team member + */ class Member { + /** + * @var int The member's user id + */ private int $userId; - private int $role; + + /** + * @var MemberRole the member's role + */ + private MemberRole $role; /** * @param int $userId - * @param int $role + * @param MemberRole $role */ - public function __construct(int $userId, int $role) { + public function __construct(int $userId, MemberRole $role) { $this->userId = $userId; $this->role = $role; } @@ -23,9 +33,9 @@ class Member { } /** - * @return int + * @return MemberRole */ - public function getRole(): int { + public function getRole(): MemberRole { return $this->role; } diff --git a/src/Data/MemberRole.php b/src/Data/MemberRole.php index 7fc09d5..05d746d 100755 --- a/src/Data/MemberRole.php +++ b/src/Data/MemberRole.php @@ -5,6 +5,11 @@ namespace App\Data; use http\Exception\InvalidArgumentException; +/** + * Enumeration class workaround + * As there is no enumerations in php 7.4, this class + * encapsulates an integer value and use it as an enumeration discriminant + */ final class MemberRole { private const ROLE_PLAYER = 0; private const ROLE_COACH = 1; diff --git a/src/Data/Team.php b/src/Data/Team.php index 409552a..48643d9 100755 --- a/src/Data/Team.php +++ b/src/Data/Team.php @@ -2,6 +2,8 @@ namespace App\Data; +use http\Url; + class Team { private string $name; private Url $picture; diff --git a/src/Data/User.php b/src/Data/User.php index dfb3034..15c9995 100755 --- a/src/Data/User.php +++ b/src/Data/User.php @@ -4,10 +4,24 @@ namespace App\Data; use http\Url; + +/** + * Public information about a user + */ interface User { + /** + * @return string the user's name + */ public function getName(): string; + /** + * @return Url The user's profile picture image URL + */ + public function getProfilePicture(): Url; + /** + * @return int The user's age + */ public function getAge(): int; } \ No newline at end of file