fix: property is passed as integer and cannot be accessed (#784)

This commit is contained in:
Aistis 2025-02-26 21:15:26 +02:00 committed by GitHub
parent a94f60c332
commit b62fea73bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 1 deletions

View File

@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Create deep copy before checking each sub schema in anyOf ([#792](https://github.com/jsonrainbow/json-schema/pull/792))
- Correctly set the schema ID when passing it as assoc array ([#794](https://github.com/jsonrainbow/json-schema/pull/794))
- Create deep copy before checking each sub schema in oneOf when only check_mode_apply_defaults is set ([#795](https://github.com/jsonrainbow/json-schema/pull/795))
- Additional property casted into int when actually is numeric string ([#784](https://github.com/jsonrainbow/json-schema/pull/784))
### Changed
- Used PHPStan's int-mask-of<T> type where applicable ([#779](https://github.com/jsonrainbow/json-schema/pull/779))

View File

@ -159,7 +159,7 @@ class ObjectConstraint extends Constraint
{
if (is_array($element) && (isset($element[$property]) || array_key_exists($property, $element)) /*$this->checkMode == self::CHECK_MODE_TYPE_CAST*/) {
return $element[$property];
} elseif (is_object($element) && property_exists($element, $property)) {
} elseif (is_object($element) && property_exists($element, (string) $property)) {
return $element->$property;
}

View File

@ -189,6 +189,24 @@ class AdditionalPropertiesTest extends BaseTestCase
"additionalProperties": true
}'
],
'additional property casted into int when actually is numeric string (#784)' => [
'{
"prop1": {
"123": "a"
}
}',
'{
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"123": {
"type": "string"
}
}
}
}'
],
];
}
}