-
Notifications
You must be signed in to change notification settings - Fork 96
Description
When you are defining a Parameter like this:
"properties": {
"code": {
"description": "The Code of the Exception",
"type": "integer",
"example": 0
},
//...
}
and you try to get settings on that "code"-Property that are not set you will get values instead of null or undefined.
For example trying to get the "exclusiveMinimum"-Property will return "false" instead of null/undefined. This causes other frameworks like "justinrainbow/json-schema" to be unable to handle this.
I found the code responsible for this behaviour in src/SpecBaseObject.php::__get (Line 341)
:
337 if (isset($this->attributes()[$name])) {
338 if (is_array($this->attributes()[$name])) {
339 return [];
340 } elseif ($this->attributes()[$name] === Type::BOOLEAN) {
341 return false;
342 }
343 return null;
344 }
Is there a reason why array and boolean are specially handled here? From my POV that is strange because when I am trying to get the value of a setting that is not set I would expect those to be undefined.
Best example is the "exclusiveMinimum"-Setting of the Integer-Type which will be set to false by this function if not set what will cause the schema to be invalid because there is no minimum defined.