From a74736d4da0cf27748402c65683a12d9a1735823 Mon Sep 17 00:00:00 2001 From: Susann Sgorzaly Date: Thu, 22 Feb 2018 21:01:06 +0100 Subject: [PATCH] init implementation of abstract enum class --- src/enums/AbstractEnum.php | 40 ++++++++++++++++++++++++++++++++++++++ src/enums/DatatypeEnum.php | 2 +- src/enums/SortEnum.php | 9 +-------- 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/enums/AbstractEnum.php 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 @@