diff --git a/src/Symfony/Component/Messenger/Command/FailedMessagesRemoveCommand.php b/src/Symfony/Component/Messenger/Command/FailedMessagesRemoveCommand.php index 34243b3d35c0..4c708fbc4f22 100644 --- a/src/Symfony/Component/Messenger/Command/FailedMessagesRemoveCommand.php +++ b/src/Symfony/Component/Messenger/Command/FailedMessagesRemoveCommand.php @@ -74,11 +74,11 @@ private function removeMessages(string $failureTransportName, array $ids, Receiv } foreach ($ids as $id) { - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { $envelope = $receiver->find($id); } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } if (null === $envelope) { diff --git a/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php b/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php index ed7c3fa5ac7d..df007540c4e2 100644 --- a/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php +++ b/src/Symfony/Component/Messenger/Command/FailedMessagesRetryCommand.php @@ -135,14 +135,14 @@ private function runInteractive(string $failureTransportName, SymfonyStyle $io, // handling the message while (true) { $envelopes = []; - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { foreach ($receiver->all(1) as $envelope) { ++$count; $envelopes[] = $envelope; } } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } // break the loop if all messages are consumed @@ -212,11 +212,11 @@ private function retrySpecificIds(string $failureTransportName, array $ids, Symf } foreach ($ids as $id) { - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { $envelope = $receiver->find($id); } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } if (null === $envelope) { throw new RuntimeException(sprintf('The message "%s" was not found.', $id)); diff --git a/src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php b/src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php index df9c308223e2..5a6eb1fb930d 100644 --- a/src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php +++ b/src/Symfony/Component/Messenger/Command/FailedMessagesShowCommand.php @@ -96,7 +96,7 @@ private function listMessages(?string $failedTransportName, SymfonyStyle $io, in $io->comment(sprintf('Displaying only \'%s\' messages', $classFilter)); } - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { foreach ($envelopes as $envelope) { $currentClassName = \get_class($envelope->getMessage()); @@ -118,7 +118,7 @@ private function listMessages(?string $failedTransportName, SymfonyStyle $io, in ]; } } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } $rowsCount = \count($rows); @@ -148,7 +148,7 @@ private function listMessagesPerClass(?string $failedTransportName, SymfonyStyle $countPerClass = []; - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { foreach ($envelopes as $envelope) { $c = \get_class($envelope->getMessage()); @@ -160,7 +160,7 @@ private function listMessagesPerClass(?string $failedTransportName, SymfonyStyle ++$countPerClass[$c][1]; } } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } if (0 === \count($countPerClass)) { @@ -176,11 +176,11 @@ private function showMessage(?string $failedTransportName, string $id, SymfonySt { /** @var ListableReceiverInterface $receiver */ $receiver = $this->getReceiver($failedTransportName); - $this->phpSerializer?->enableClassNotFoundCreation(); + $this->phpSerializer?->acceptPhpIncompleteClass(); try { $envelope = $receiver->find($id); } finally { - $this->phpSerializer?->enableClassNotFoundCreation(false); + $this->phpSerializer?->rejectPhpIncompleteClass(); } if (null === $envelope) { throw new RuntimeException(sprintf('The message "%s" was not found.', $id)); diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerWithClassNotFoundSupportTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerWithClassNotFoundSupportTest.php index 5c3f1fe48e24..7dcdb0eba554 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerWithClassNotFoundSupportTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerWithClassNotFoundSupportTest.php @@ -65,7 +65,7 @@ public function testDecodingFailsButCreateClassNotFound() protected function createPhpSerializer(): PhpSerializer { $serializer = new PhpSerializer(); - $serializer->enableClassNotFoundCreation(); + $serializer->acceptPhpIncompleteClass(); return $serializer; } diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php index b9a4edb44f85..da08f21d3781 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php @@ -21,11 +21,22 @@ */ class PhpSerializer implements SerializerInterface { - private bool $createClassNotFound = false; + private bool $acceptPhpIncompleteClass = false; - public function enableClassNotFoundCreation(bool $enable = true): void + /** + * @internal + */ + public function acceptPhpIncompleteClass(): void + { + $this->acceptPhpIncompleteClass = true; + } + + /** + * @internal + */ + public function rejectPhpIncompleteClass(): void { - $this->createClassNotFound = $enable; + $this->acceptPhpIncompleteClass = false; } public function decode(array $encodedEnvelope): Envelope @@ -66,7 +77,7 @@ private function safelyUnserialize(string $contents): Envelope $signalingException = new MessageDecodingFailedException(sprintf('Could not decode message using PHP serialization: %s.', $contents)); - if ($this->createClassNotFound) { + if ($this->acceptPhpIncompleteClass) { $prevUnserializeHandler = ini_set('unserialize_callback_func', null); } else { $prevUnserializeHandler = ini_set('unserialize_callback_func', self::class.'::handleUnserializeCallback');