示例#1
0
 public function validate()
 {
     $datatype = JsonUtil::getType($this->node);
     $schematype = $this->getType();
     if ($datatype == 'array' && $schematype == 'object') {
         // PHP datatypes are kinda loose, so we'll fudge
         $datatype = 'object';
     }
     if ($datatype == 'number' && $schematype == 'integer' && $this->node == (int) $this->node) {
         // Alright, it'll work as an int
         $datatype = 'integer';
     }
     if ($datatype != $schematype) {
         if (is_null($datatype) && !is_object($this->parent)) {
             $msg = JsonUtil::uiMessage('jsonschema-invalidempty');
             $e = new JsonSchemaException($msg);
             $e->subtype = "validate-fail-null";
             throw $e;
         } else {
             $datatype = is_null($datatype) ? "null" : $datatype;
             $msg = JsonUtil::uiMessage('jsonschema-invalidnode', $schematype, $datatype, $this->getDataPathTitles());
             $e = new JsonSchemaException($msg);
             $e->subtype = "validate-fail";
             throw $e;
         }
     }
     switch ($schematype) {
         case 'object':
             $this->validateObjectChildren();
             break;
         case 'array':
             $this->validateArrayChildren();
             break;
     }
     return true;
 }