%PDF- %PDF-
Direktori : /var/www/projetos/suporte.iigd.com.br/vendor/swaggest/json-schema/src/Constraint/ |
Current File : /var/www/projetos/suporte.iigd.com.br/vendor/swaggest/json-schema/src/Constraint/Type.php |
<?php namespace Swaggest\JsonSchema\Constraint; use Swaggest\JsonSchema\Schema; class Type implements Constraint { // TODO deprecate in favour of JsonSchema::<TYPE> ? const OBJECT = 'object'; const STRING = 'string'; const INTEGER = 'integer'; const NUMBER = 'number'; const ARR = 'array'; const BOOLEAN = 'boolean'; const NULL = 'null'; public static function readString($types, &$data) { if (!is_array($types)) { $types = array($types); } $ok = false; foreach ($types as $type) { switch ($type) { case self::OBJECT: break; case self::ARR: break; case self::STRING: $ok = true; break; case self::NUMBER: $newData = filter_var($data, FILTER_VALIDATE_FLOAT, FILTER_NULL_ON_FAILURE); $ok = is_float($newData); break; case self::INTEGER: $newData = filter_var($data, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE); $ok = is_int($newData); break; case self::BOOLEAN: $newData = filter_var($data, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); $ok = is_bool($newData); break; case self::NULL: break; } if ($ok) { if (isset($newData)) { $data = $newData; } return true; } } return false; } public static function isValid($types, $data, $version) { if (!is_array($types)) { $types = array($types); } $ok = false; foreach ($types as $type) { switch ($type) { case self::OBJECT: $ok = is_object($data); break; case self::ARR: $ok = is_array($data); break; case self::STRING: $ok = is_string($data); break; case self::INTEGER: $ok = is_int($data) || (is_float($data) && ((ceil($data) === $data && $version !== Schema::VERSION_DRAFT_04) // float without fraction is int || abs($data) > PHP_INT_MAX)); // big float accepted for int break; case self::NUMBER: $ok = is_int($data) || is_float($data); break; case self::BOOLEAN: $ok = is_bool($data); break; case self::NULL: $ok = null === $data; break; } if ($ok) { return true; } } return false; } }