diff --git a/src/enums/AbstractEnum.php b/src/enums/AbstractEnum.php new file mode 100644 index 0000000..aae78e1 --- /dev/null +++ b/src/enums/AbstractEnum.php @@ -0,0 +1,40 @@ +isValid($value)) { + throw new \UnexpectedValueException("Value '$value' is not part of the enum " . get_called_class()); + } + $this->value = $value; + } + + public static function getConstants(){ + $class = get_called_class(); + $reflection = new \ReflectionClass($class); + + return $reflection->getConstants(); + } + + /** + * Check if enum value is valid + * + * @param $value + * + * @return bool + */ + public static function isValid($value) + { + return in_array($value, static::getConstants(), true); + } +} diff --git a/src/enums/DatatypeEnum.php b/src/enums/DatatypeEnum.php index 8fea47d..7f490e9 100644 --- a/src/enums/DatatypeEnum.php +++ b/src/enums/DatatypeEnum.php @@ -9,7 +9,7 @@ namespace ParseCsv\enums; * * todo: needs a basic parent enum class for error handling. */ -class DatatypeEnum { +class DatatypeEnum extends AbstractEnum { const __DEFAULT = self::TYPE_STRING; diff --git a/src/enums/SortEnum.php b/src/enums/SortEnum.php index 01a37b0..e5b78f3 100644 --- a/src/enums/SortEnum.php +++ b/src/enums/SortEnum.php @@ -1,15 +1,8 @@