public static function ensureEnum($value, $enums)
{
static $types = array();
if (func_num_args() === 2 && is_string($enums)) {
if (!isset($types[$enums])) {
$types[$enums] = new \ReflectionClass($enums);
}
if ($types[$enums]->hasConstant($value)) {
return $value;
} else {
throw new TInvalidDataValueException('propertyvalue_enumvalue_invalid', $value, implode(' | ', $types[$enums]->getConstants()));
}
} else {
if (!is_array($enums)) {
$enums = func_get_args();
array_shift($enums);
}
}
if (in_array($value, $enums, true)) {
return $value;
} else {
throw new TInvalidDataValueException('propertyvalue_enumvalue_invalid', $value, implode(' | ', $enums));
}
}