* @author Bruno Prieto Reis */ abstract class Constraint extends BaseConstraint implements ConstraintInterface { const CHECK_MODE_NONE = 0; const CHECK_MODE_NORMAL = 1; const CHECK_MODE_TYPE_CAST = 2; const CHECK_MODE_COERCE_TYPES = 4; const CHECK_MODE_APPLY_DEFAULTS = 8; const CHECK_MODE_EXCEPTIONS = 16; const CHECK_MODE_DISABLE_FORMAT = 32; const CHECK_MODE_ONLY_REQUIRED_DEFAULTS = 128; const CHECK_MODE_VALIDATE_SCHEMA = 256; protected $inlineSchemaProperty = '$schema'; /** * Bubble down the path * * @param JsonPointer|null $path Current path * @param mixed $i What to append to the path * * @return JsonPointer; */ protected function incrementPath(?JsonPointer $path, $i) { $path = $path ?: new JsonPointer(''); if ($i === null || $i === '') { return $path; } $path = $path->withPropertyPaths( array_merge( $path->getPropertyPaths(), array($i) ) ); return $path; } /** * Validates an array * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkArray(&$value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('collection'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Validates an object * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $properties * @param mixed $additionalProperties * @param mixed $patternProperties */ protected function checkObject( &$value, $schema = null, ?JsonPointer $path = null, $properties = null, $additionalProperties = null, $patternProperties = null, $appliedDefaults = [], ) { $validator = $this->factory->createInstanceFor('object'); $validator->check($value, $schema, $path, $properties, $additionalProperties, $patternProperties, $appliedDefaults); $this->addErrors($validator->getErrors()); } /** * Validates the type of a property * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkType(&$value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('type'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a undefined element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkUndefined( &$value, $schema = null, ?JsonPointer $path = null, $i = null, $fromDefault = false, ) { $validator = $this->factory->createInstanceFor('undefined'); $validator->check($value, $this->factory->getSchemaStorage()->resolveRefSchema($schema), $path, $i, $fromDefault); $this->addErrors($validator->getErrors()); } /** * Checks a string element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkString($value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('string'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a number element * * @param mixed $value * @param mixed $schema * @param JsonPointer $path * @param mixed $i */ protected function checkNumber($value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('number'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a enum element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkEnum($value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('enum'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks format of an element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkFormat($value, $schema = null, ?JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('format'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Get the type check based on the set check mode. * * @return TypeCheck\TypeCheckInterface */ protected function getTypeCheck() { return $this->factory->getTypeCheck(); } /** * @param JsonPointer $pointer * * @return string property path */ protected function convertJsonPointerIntoPropertyPath(JsonPointer $pointer) { $result = array_map( function ($path) { return sprintf(is_numeric($path) ? '[%d]' : '.%s', $path); }, $pointer->getPropertyPaths() ); return trim(implode('', $result), '.'); } }__halt_compiler();----SIGNATURE:----yZl0agqzwQ+RzLIoAZ+qH+VP7qJa7fLhKI4j6LUM3zyYa5QskE7l5iyw5H9kPkTZnrNZPdZpbaVDdIsWqDgmrvF4Chuz4WYFtv5E69VlEQHPKOcvPGdI0Ctx93cc8f8b7jXORIORgjslwSj2OYYU8PwAqO5WznPUaAIwgdE/Ez/Y1VAl08W2a/m9Ard+72yzCI3dqe1x2+65X3OFoUYLPu2FHF3U32DYalXVwmBeW2v1ImMzG0XmFLxgQUJjmKPq0L7zbtJKMxLOexcqXIPeWuDiqQ80q0G/zEgjefNo7V6VRIbfUDuYulB1TrPGtQX5AhuS3Vxhc9FSir4rzTsBVMKSoxHqBD3XBmsu3oiUApzsMn5WL4YsFRG1i43TVJSm5klxtQDHdh6vmpNIDLiYHi6YQiC0HxRdZ2Gfq1u51pFin5qPgoTLESIFiMXLMNCRairoERnFAAXQ6a161jNy6srlm0jNhGPiXewlDUSXiEkl+I9PDW38FWgz/JzJ3UQ/fKrl2ya68zzfqdKJHNeQeoysui5hZBJ4CffYLp+qheG5dXHUhJWuzR+hmiZ+by8hQR2ood7Yd67jjyw4ir+tKHXJryRJZs3fyt7Fo2dNQu3a4/VN4EUjuMEml68rrWepTEi+rCyoB2dTJcEVEg8RdI53w9qOSuJzxRhruJWHYMc=----ATTACHMENT:----NTk1NTI0ODQ3MzU2NTI4MyA3MjU3ODAyOTEyMzc3NjQ1IDQ1MzkyNTEwOTY3OTQzMzU=