You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
960 B
40 lines
960 B
<?php
|
|
|
|
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;
|
|
private const MIN = self::ROLE_PLAYER;
|
|
private const MAX = self::ROLE_COACH;
|
|
|
|
private int $value;
|
|
|
|
private function __construct(int $val) {
|
|
if (!$this->isValid($val)) {
|
|
throw new InvalidArgumentException("Valeur du rôle invalide");
|
|
}
|
|
$this->value = $val;
|
|
}
|
|
|
|
private function isValid(int $val): bool {
|
|
return ($val <= self::MAX and $val >= self::MIN);
|
|
}
|
|
|
|
public function isPlayer(): bool {
|
|
return ($this->value == self::ROLE_PLAYER);
|
|
}
|
|
|
|
public function isCoach(): bool {
|
|
return ($this->value == self::ROLE_COACH);
|
|
}
|
|
|
|
}
|