Skip to content

[Serializer] ObjectNormalizer gives warnings on normalizing object with static array property #58221

Closed
@gzumba

Description

@gzumba

Symfony version(s) affected

7.1.4

Description

Calling the ->normalize() on an object with a static array property causes a warning:
Undefined property: App\Tests\Unit\TestClass::$foo

This used to work on 7.1.1. This is caused by:

https://github.com/symfony/symfony/blob/v7.1.4/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php#L180

Working code:

https://github.com/symfony/symfony/blob/v7.1.1/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php#L180

How to reproduce

class ObjectNormalizerTest extends \PHPUnit\Framework\TestCase
{
    public function testNormalizing(): void
    {
        $normalizer = new ObjectNormalizer(new ClassMetadataFactory(new AttributeLoader()));
        $test = new TestClass;
        $normalizer->normalize($test);
    }
}

class TestClass
{
    public static array $foo = ['bar'];
}
`
```

### Possible Solution

_No response_

### Additional Context

A stack trace showing how we  get to the issue in PropertyAccessor:

```
#0 /opt/projects/zumba//vendor/symfony/property-access/PropertyAccessor.php(323): Symfony\Component\PropertyAccess\PropertyAccessor->readProperty()
#1 /opt/projects/zumba//vendor/symfony/property-access/PropertyAccessor.php(222): Symfony\Component\PropertyAccess\PropertyAccessor->readPropertiesUntil()
#2 /opt/projects/zumba//vendor/symfony/serializer/Normalizer/ObjectNormalizer.php(181): Symfony\Component\PropertyAccess\PropertyAccessor->isReadable()
#3 /opt/projects/zumba//vendor/symfony/serializer/Normalizer/AbstractNormalizer.php(245): Symfony\Component\Serializer\Normalizer\ObjectNormalizer->isAllowedAttribute()
#4 /opt/projects/zumba//vendor/symfony/serializer/Normalizer/ObjectNormalizer.php(148): Symfony\Component\Serializer\Normalizer\AbstractNormalizer->getAllowedAttributes()
#5 /opt/projects/zumba//vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php(257): Symfony\Component\Serializer\Normalizer\ObjectNormalizer->getAllowedAttributes()
#6 /opt/projects/zumba//vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php(170): Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->getAttributes()
#7 /opt/projects/zumba//tests/Unit/ObjectNormalizerTest.php(17): Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->normalize()
#8 /opt/projects/zumba//vendor/phpunit/phpunit/src/Framework/TestCase.php(1188): App\Tests\Unit\ObjectNormalizerTest->testNormalizing()
```

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions