/** * @param Generic\TypeConstraint $constraint * * @return string */ public function visitTypeConstraint(Generic\TypeConstraint $constraint) { $valueTypes = array_map(function (ValueType $valueType) { return var_export($valueType->value(), true); }, $constraint->valueTypes()); if (count($valueTypes) < 2) { return sprintf('The value must be of type %s.', array_pop($valueTypes)); } return sprintf('The value must be one of the following types: %s.', implode(', ', $valueTypes)); }
/** * @param Generic\TypeConstraint $constraint * * @return Result\ValidationResult */ public function visitTypeConstraint(Generic\TypeConstraint $constraint) { $value = $this->currentValue(); $isValid = false; foreach ($constraint->valueTypes() as $valueType) { if ($valueType === Value\ValueType::ARRAY_TYPE()) { $isValid = $value instanceof Value\ArrayValue; } elseif ($valueType === Value\ValueType::BOOLEAN_TYPE()) { $isValid = $value instanceof Value\BooleanValue; } elseif ($valueType === Value\ValueType::DATE_TIME_TYPE()) { $isValid = $value instanceof Value\DateTimeValue; } elseif ($valueType === Value\ValueType::INTEGER_TYPE()) { $isValid = $value instanceof Value\IntegerValue; } elseif ($valueType === Value\ValueType::NULL_TYPE()) { $isValid = $value instanceof Value\NullValue; } elseif ($valueType === Value\ValueType::NUMBER_TYPE()) { $isValid = $value instanceof Value\NumberValueInterface; } elseif ($valueType === Value\ValueType::OBJECT_TYPE()) { $isValid = $value instanceof Value\ObjectValue; } elseif ($valueType === Value\ValueType::STRING_TYPE()) { $isValid = $value instanceof Value\StringValue; } if ($isValid) { return $this->createResult(); } } return $this->createSingleIssueResult($constraint); }