/**
  * @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));
 }
예제 #2
0
 /**
  * @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);
 }