getConstants(); } return self::$constCacheArray[$calledClass]; } /** * Returns all values for this enum. * * @return array */ public static function values() { return array_values(self::getConstants()); } /** * Returns true the value is valid for this enum. * * @param string $value * * @return bool true if value is valid */ public static function isValid($value) { $values = array_values(self::getConstants()); return in_array($value, $values, true); } /** * Validates that the value passed is a valid value. * * @param string $value */ public static function validate($value): void { if (!self::isValid($value)) { $calledClass = static::class; $values = array_values(self::getConstants()); throw new InvalidArgumentException("$value is not a valid value for $calledClass, possible values are " . implode(', ', $values)); } } }