-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Open
Description
Symfony version(s) affected
7.x.x
Description
When serializing an object with symfony/serializer, the PropertyAccess component incorrectly decides whether to read a public property or call a method with the same name.
If a class contains public readonly properties and also defines methods with identical names, the PropertyAccessor attempts to invoke the method instead of reading the property, which leads to a runtime error.
How to reproduce
Repository: https://github.com/root-aza/symfony-issue-62733
Possible Solution
No response
Additional Context
StackTrace
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function DocumentState::loaded(), 0 passed in /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php on line 401 and exactly 1 expected in /Users/aza/PhpstormProjects/symfony-issue-61552/app.php:72
Stack trace:
#0 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php(401): DocumentState::loaded()
#1 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php(102): Symfony\Component\PropertyAccess\PropertyAccessor->readProperty(Array, 'loaded', false)
#2 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php(149): Symfony\Component\PropertyAccess\PropertyAccessor->getValue(Object(DocumentState), 'loaded')
#3 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php(198): Symfony\Component\Serializer\Normalizer\ObjectNormalizer->getAttributeValue(Object(DocumentState), 'loaded', 'json', Array)
#4 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Serializer.php(152): Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->normalize(Object(DocumentState), 'json', Array)
#5 /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Serializer.php(131): Symfony\Component\Serializer\Serializer->normalize(Object(DocumentState), 'json', Array)
#6 /Users/aza/PhpstormProjects/symfony-issue-61552/app.php(80): Symfony\Component\Serializer\Serializer->serialize(Object(DocumentState), 'json')
#7 {main}
thrown in /Users/aza/PhpstormProjects/symfony-issue-61552/app.php on line 72
Fatal error: Uncaught ArgumentCountError: Too few arguments to function DocumentState::loaded(), 0 passed in /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php on line 401 and exactly 1 expected in /Users/aza/PhpstormProjects/symfony-issue-61552/app.php on line 72
ArgumentCountError: Too few arguments to function DocumentState::loaded(), 0 passed in /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php on line 401 and exactly 1 expected in /Users/aza/PhpstormProjects/symfony-issue-61552/app.php on line 72
Call Stack:
0.0001 407192 1. {main}() /Users/aza/PhpstormProjects/symfony-issue-61552/app.php:0
0.0086 2476064 2. Symfony\Component\Serializer\Serializer->serialize() /Users/aza/PhpstormProjects/symfony-issue-61552/app.php:80
0.0086 2476440 3. Symfony\Component\Serializer\Serializer->normalize() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Serializer.php:131
0.0086 2477408 4. Symfony\Component\Serializer\Normalizer\ObjectNormalizer->normalize() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Serializer.php:152
0.0090 2518784 5. Symfony\Component\Serializer\Normalizer\ObjectNormalizer->getAttributeValue() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:198
0.0091 2518784 6. Symfony\Component\PropertyAccess\PropertyAccessor->getValue() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php:149
0.0091 2519000 7. Symfony\Component\PropertyAccess\PropertyAccessor->readProperty() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php:102
0.0091 2524440 8. DocumentState::loaded() /Users/aza/PhpstormProjects/symfony-issue-61552/vendor/symfony/property-access/PropertyAccessor.php:401