Closed
Description
Symfony version(s) affected: 4.4.2 (PHP 7.4.2)
Description
Bug when normalizing a entity: Typed property Proxies\__CG__\App\Entity\File::$ must not be accessed before initialization (in __sleep)
Also, I have no idea what the property File::$
means or why is it trying to access it...
How to reproduce
No idea
Possible Solution
Modifying AbstractObjectNormalizer.php:getCacheKey()
to also handle \Throwable
s:
private function getCacheKey(?string $format, array $context)
{
foreach ($context[self::EXCLUDE_FROM_CACHE_KEY] ?? $this->defaultContext[self::EXCLUDE_FROM_CACHE_KEY] as $key) {
unset($context[$key]);
}
unset($context[self::EXCLUDE_FROM_CACHE_KEY]);
unset($context['cache_key']); // avoid artificially different keys
try {
return md5($format.serialize([
'context' => $context,
'ignored' => $this->ignoredAttributes,
'camelized' => $this->camelizedAttributes,
]));
} catch (\Exception $exception) {
// The context cannot be serialized, skip the cache
return false;
} catch (\Throwable $e) {
return false; // <-- THIS
}
}
Additional context
Stack trace:
Error:
Typed property Proxies\__CG__\App\Entity\File::$ must not be accessed before initialization (in __sleep)
at vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:626
at serialize(array('context' => array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership), 'api_denormalize' => true), 'ignored' => array(), 'camelized' => array()))
(vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:626)
at Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->getCacheKey('json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership), 'api_denormalize' => true))
(vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:327)
at Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->denormalize(array('userTerms' => '/api/files/35993dd1-41b8-4fdb-8350-8fc47f61b41e'), 'App\\Entity\\Partnership', 'json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership), 'api_denormalize' => true))
(vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php:222)
at ApiPlatform\Core\Serializer\AbstractItemNormalizer->denormalize(array('userTerms' => '/api/files/35993dd1-41b8-4fdb-8350-8fc47f61b41e'), 'App\\Entity\\Partnership', 'json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership), 'api_denormalize' => true))
(vendor/api-platform/core/src/Serializer/ItemNormalizer.php:69)
at ApiPlatform\Core\Serializer\ItemNormalizer->denormalize(array('userTerms' => '/api/files/35993dd1-41b8-4fdb-8350-8fc47f61b41e'), 'App\\Entity\\Partnership', 'json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership)))
(vendor/symfony/serializer/Serializer.php:191)
at Symfony\Component\Serializer\Serializer->denormalize(array('userTerms' => '/api/files/35993dd1-41b8-4fdb-8350-8fc47f61b41e'), 'App\\Entity\\Partnership', 'json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership)))
(vendor/symfony/serializer/Serializer.php:142)
at Symfony\Component\Serializer\Serializer->deserialize(array('userTerms' => '/api/files/35993dd1-41b8-4fdb-8350-8fc47f61b41e'), 'App\\Entity\\Partnership', 'json', array('groups' => array('partnership:write'), 'operation_type' => 'item', 'item_operation_name' => 'patch', 'api_allow_update' => true, 'resource_class' => 'App\\Entity\\Partnership', 'input' => null, 'output' => null, 'request_uri' => '/api/partnerships/1', 'uri' => 'http://localhost:8000/api/partnerships/1', 'skip_null_values' => true, 'object_to_populate' => object(Partnership)))
(vendor/api-platform/core/src/EventListener/DeserializeListener.php:106)
at ApiPlatform\Core\EventListener\DeserializeListener->onKernelRequest(object(RequestEvent), 'kernel.request', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/Debug/WrappedListener.php:126)
at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(RequestEvent), 'kernel.request', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/EventDispatcher.php:264)
at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.request', object(RequestEvent))
(vendor/symfony/event-dispatcher/EventDispatcher.php:239)
at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.request', object(RequestEvent))
(vendor/symfony/event-dispatcher/EventDispatcher.php:73)
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(RequestEvent), 'kernel.request')
(vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:168)
at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(RequestEvent), 'kernel.request')
(vendor/symfony/http-kernel/HttpKernel.php:122)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:68)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:201)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(public/index.php:28)