Skip to content

[Serializer] Serializer tries to access initializer property when serializing a Doctrine Proxy object  #44273

Closed
@IonBazan

Description

@IonBazan

Symfony version(s) affected

5.3.11

Description

After upgrading symfony/serializer from 5.3.10 to 5.3.11 Seralizer starts to access special $initializer<id> property in proxies generated by Doctrine instead of letting the proxy initialize with actual objects.

How to reproduce

Edit: Use this repository to reproduce: https://github.com/IonBazan/serializer-proxy-bug

When Serializing a Doctrine ODM document with ReferenceMany or ReferenceOne, PropertyAccessor is trying to access a special $initializer<id> property.

Create 2 documents and make one of them reference the other. Now try to serialize the referencing document.
Following error should occur:

Undefined property: App\Domain\Document\Security\User::$initializer426f5 in /<redacted>/vendor/symfony/property-access/PropertyAccessor.php on line 473
ErrorException:
User Notice: Undefined property: App\Domain\Document\Security\User::$initializer426f5 in /<redacted>/vendor/symfony/property-access/PropertyAccessor.php on line 473

  at var/cache/dev/doctrine/odm/mongodb/Proxies/MongoDBODMProxies__PM__AppDomainDocumentSecurityUserGenerated0ca55a35e3ea298c1fbe2a3466d2e5dc.php:210
  at MongoDBODMProxies\__PM__\App\Domain\Document\Security\User\Generated0ca55a35e3ea298c1fbe2a3466d2e5dc->__get('initializer426f5')
     (vendor/symfony/property-access/PropertyAccessor.php:473)
  at Symfony\Component\PropertyAccess\PropertyAccessor->readProperty(array(object(Generated0ca55a35e3ea298c1fbe2a3466d2e5dc)), 'initializer426f5', false)
     (vendor/symfony/property-access/PropertyAccessor.php:154)
  at Symfony\Component\PropertyAccess\PropertyAccessor->getValue(object(Generated0ca55a35e3ea298c1fbe2a3466d2e5dc), 'initializer426f5')
     (vendor/symfony/serializer/Normalizer/ObjectNormalizer.php:148)
  at Symfony\Component\Serializer\Normalizer\ObjectNormalizer->getAttributeValue(object(Generated0ca55a35e3ea298c1fbe2a3466d2e5dc), 'initializer426f5', 'json', array('cache_key' => '8bae177454fb7ad4c74be899646036e2', 'circular_reference_limit_counters' => array('00000000046ab22e000000000059cf16' => 1, '00000000046a84a4000000000059cf16' => 1)))
     (vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:179)
  at Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->normalize(object(Generated0ca55a35e3ea298c1fbe2a3466d2e5dc), 'json', array('cache_key' => '8bae177454fb7ad4c74be899646036e2', 'circular_reference_limit_counters' => array('00000000046ab22e000000000059cf16' => 1, '00000000046a84a4000000000059cf16' => 1)))
     (vendor/symfony/serializer/Serializer.php:154)
  at Symfony\Component\Serializer\Serializer->normalize(object(Generated0ca55a35e3ea298c1fbe2a3466d2e5dc), 'json', array('cache_key' => '8bae177454fb7ad4c74be899646036e2', 'circular_reference_limit_counters' => array('00000000046ab22e000000000059cf16' => 1)))
     (vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:207)
  at Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->normalize(object(Log), 'json', array('cache_key' => '8bae177454fb7ad4c74be899646036e2', 'circular_reference_limit_counters' => array('00000000046ab22e000000000059cf16' => 1)))
     (vendor/symfony/serializer/Serializer.php:154)
  at Symfony\Component\Serializer\Serializer->normalize(object(Log), 'json', array())
     (vendor/symfony/serializer/Serializer.php:168)
  at Symfony\Component\Serializer\Serializer->normalize(array(object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log)), 'json', array())
     (vendor/symfony/serializer/Serializer.php:127)
  at Symfony\Component\Serializer\Serializer->serialize(array(object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log), object(Log)), 'json')
     (src/Http/Controller/DashboardController.php:20)
  at App\Http\Controller\DashboardController->__invoke(object(LogRepository), object(Serializer))
     (vendor/symfony/http-kernel/HttpKernel.php:156)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:78)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:199)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:37)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:35)

Possible Solution

No response

Additional Context

No response

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