/** * @param Property $property * @param $value * @return mixed * @throws RequirementValidationException */ public function validate(Property $property, $value) { if ($value === null) { return; } if ($value === null) { return; } switch ($this->type) { case PropertyType::INTEGER: $check = is_int($value); break; case PropertyType::DATETIME: $check = $value instanceof \DateTime; break; case PropertyType::NUMBER: $check = is_numeric($value); break; case PropertyType::STRING: $check = is_string($value); break; case PropertyType::OBJECT: $check = is_array($value) || is_object($value); break; default: throw RequirementValidationException::make($property, $this, $value); break; } if (!$check) { throw RequirementValidationException::make($property, $this, $value); } }
/** * @param Property $property * @param $value * @return mixed * @throws RequirementValidationException */ public function validate(Property $property, $value) { if ($value === null) { return; } if (!in_array((string) $value, $this->values)) { throw RequirementValidationException::make($property, $this, $value); } }
/** * @param Property $property * @param $value * @return mixed * @throws RequirementValidationException */ public function validate(Property $property, $value) { if ($value === null) { return; } if (PropertyType::isNumeric($property->getType())) { if ($value > $this->length) { throw RequirementValidationException::make($property, $this, $value); } } else { if (mb_strlen($value) > $this->length) { throw RequirementValidationException::make($property, $this, $value); } } }
/** * @param string $path * @throws PropertyValidationException * @throws ResourceException * @throws \CatLab\Requirements\Exceptions\ResourceValidationException */ public function validate(string $path) { $messages = new MessageCollection(); $field = $this->getField(); if (!$field instanceof RelationshipField) { throw new ResourceException("RelationshipValue found without a RelationshipField."); } if ($field->canCreateNewChildren()) { /* * Now check the children */ foreach ($this->getChildrenToProcess() as $child) { /** @var RESTResource $child */ if ($child) { try { $child->validate($this->appendToPath($path, $field)); } catch (ResourceValidationException $e) { $messages->merge($e->getMessages()); } } else { $this->getField()->validate(null, $this->appendToPath($path, $field)); } } } elseif ($field->canLinkExistingEntities()) { /* * We only need identifiers... */ $identifiers = $field->getChildResource()->getFields()->getIdentifiers(); foreach ($this->getChildrenToProcess() as $child) { if ($child) { /** @var RESTResource $child */ foreach ($identifiers as $identifier) { /** @var IdentifierField $identifier */ $prop = $child->getProperties()->getProperty($identifier); if (!$prop || $prop->getValue() === null) { $identifier->setPath($this->appendToPath($path, $field)); $propertyException = RequirementValidationException::make($identifier, new Exists(), null); $messages = new MessageCollection(); $messages->add($propertyException->getRequirement()->getErrorMessage($propertyException)); throw PropertyValidationException::make($identifier, $messages); } } } else { try { $this->getField()->validate(null, $this->appendToPath($path, $field)); } catch (ResourceValidationException $e) { $messages->merge($e->getMessages()); } } } } if (count($messages) > 0) { throw PropertyValidationException::make($field, $messages); } }