Multi Type¶
By providing an array with types for a property multiple types can be allowed.
{
"$id": "example",
"type": "object",
"properties": {
"example": {
"type": ["number", "string"]
}
}
}
Generated interface (doesn’t contain type hints as multiple types are allowed):
// $example will be type-annotated with `float|string`
public function setExample($example): self;
// $example will be type-annotated with `float|string|null` (as the property isn't required)
public function getExample();
Possible exceptions:
- Invalid type for property. Requires [float, string], got __TYPE__
The thrown exception will be a PHPModelGenerator\Exception\Generic\InvalidTypeException which provides the following methods to get further error details:
// returns a string if the property expects exactly one type, an array if the property accepts multiple types
public function getExpectedType()
// get the name of the property which failed
public function getPropertyName(): string
// get the value provided to the property
public function getProvidedValue()
Additional validators¶
For each type given in the allowed types array additional validators may be added to the property:
{
"$id": "example",
"type": "object",
"properties": {
"example": {
"type": ["number", "string", "array"],
"minimum": 10,
"minLength": 4,
"items": {
"type": "string"
},
"minItems": 2
}
}
}
The property example will be type hinted with float|string|string[]|null. The validators are applied if the given input matches the corresponding type. For example if an array [“Hello”, 123, “Goodbye”] is given the validation will fail as numbers aren’t allowed in arrays:
Invalid items in array example:
- invalid item #1
* Invalid type for item of array example. Requires string, got integer