diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyTask.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyTask.php index 94773b4e1eb44..06cadadef45f5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyTask.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Fixtures/Messenger/DummyTask.php @@ -9,6 +9,9 @@ #[AsCronTask(expression: '0 * * * *', timezone: 'Europe/Berlin', arguments: ['2'], schedule: 'dummy_task', method: 'method2')] #[AsPeriodicTask(frequency: 5, arguments: [3], schedule: 'dummy_task')] #[AsPeriodicTask(frequency: '1 day', from: '2023-10-25 09:59:00Z', jitter: 60, arguments: ['4'], schedule: 'dummy_task', method: 'method4')] +#[AsPeriodicTask(frequency: '1 day', from: '2023-10-25 09:59:00Z', arguments: ['9'], schedule: 'dummy_task', method: 'method5')] +#[AsPeriodicTask(frequency: '1 day', from: '2023-10-25 09:59:00Z', arguments: ['9b'], schedule: 'dummy_task', method: 'method5')] +#[AsPeriodicTask(frequency: '1 day', from: '2023-10-25 09:59:00Z', arguments: ['named' => '9'], schedule: 'dummy_task', method: 'method5')] class DummyTask { public static array $calls = []; diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php index 7b3cd197d5a70..7f737a4c4e7b2 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SchedulerTest.php @@ -84,6 +84,7 @@ public function testAutoconfiguredScheduler() $this->assertCount(779, $calls['__invoke']); $this->assertSame([['2']], $calls['method2']); $this->assertSame([['4']], $calls['method4']); + $this->assertSame([['9'], ['9b'], ['named' => '9']], $calls['method5']); $this->assertSame([['5', 6], ['7', 8]], $calls['attributesOnMethod']); } diff --git a/src/Symfony/Component/Scheduler/Command/DebugCommand.php b/src/Symfony/Component/Scheduler/Command/DebugCommand.php index 46384c7ab1582..60484fbd9ae92 100644 --- a/src/Symfony/Component/Scheduler/Command/DebugCommand.php +++ b/src/Symfony/Component/Scheduler/Command/DebugCommand.php @@ -114,6 +114,9 @@ private static function renderRecurringMessage(RecurringMessage $recurringMessag return null; } - return [(string) $trigger, $recurringMessage->getProvider()->getId(), $next]; + $provider = $recurringMessage->getProvider(); + $description = $provider instanceof \Stringable ? (string) $provider : $provider->getId(); + + return [(string) $trigger, $description, $next]; } } diff --git a/src/Symfony/Component/Scheduler/RecurringMessage.php b/src/Symfony/Component/Scheduler/RecurringMessage.php index 50bd18789db0b..abdaf31f5d117 100644 --- a/src/Symfony/Component/Scheduler/RecurringMessage.php +++ b/src/Symfony/Component/Scheduler/RecurringMessage.php @@ -75,14 +75,15 @@ public static function trigger(TriggerInterface $trigger, object $message): self return new self($trigger, $message); } - $description = ''; - try { - $description = $message instanceof \Stringable ? (string) $message : serialize($message); - } catch (\Exception) { + $description = $message::class; + if ($message instanceof \Stringable) { + try { + $description .= " ($message)"; + } catch (\Exception) { + } } - $description = sprintf('%s(%s)', $message::class, $description); - return new self($trigger, new StaticMessageProvider([$message], $description)); + return new self($trigger, new StaticMessageProvider([$message], strtr(substr(base64_encode(hash('xxh128', serialize($message), true)), 0, 7), '/+', '._'), -7), $description)); } public function withJitter(int $maxSeconds = 60): self diff --git a/src/Symfony/Component/Scheduler/Tests/Command/DebugCommandTest.php b/src/Symfony/Component/Scheduler/Tests/Command/DebugCommandTest.php index 07fbd473fda2c..e5f1843e91564 100644 --- a/src/Symfony/Component/Scheduler/Tests/Command/DebugCommandTest.php +++ b/src/Symfony/Component/Scheduler/Tests/Command/DebugCommandTest.php @@ -106,11 +106,11 @@ public function testExecuteWithScheduleWithoutTriggerShowingNoNextRunWithAllOpti "schedule_name\n". "-------------\n". "\n". - " --------- ------------------------------- ---------- \n". - " Trigger Provider Next Run \n". - " --------- ------------------------------- ---------- \n". - " test stdClass(O:8:\"stdClass\":0:{}) - \n". - " --------- ------------------------------- ---------- \n". + " --------- ---------- ---------- \n". + " Trigger Provider Next Run \n". + " --------- ---------- ---------- \n". + " test stdClass - \n". + " --------- ---------- ---------- \n". "\n", $tester->getDisplay(true)); } @@ -143,11 +143,11 @@ public function testExecuteWithSchedule() "schedule_name\n". "-------------\n". "\n". - " ------------------------------- ------------------------------- --------------------------------- \n". - " Trigger Provider Next Run \n". - " ------------------------------- ------------------------------- --------------------------------- \n". - " every first day of next month stdClass\(O:8:\"stdClass\":0:{}\) \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} (\+|-)\d{4} \n". - " ------------------------------- ------------------------------- --------------------------------- \n". + " ------------------------------- ---------- --------------------------------- \n". + " Trigger Provider Next Run \n". + " ------------------------------- ---------- --------------------------------- \n". + " every first day of next month stdClass \w{3}, \d{1,2} \w{3} \d{4} \d{2}:\d{2}:\d{2} (\+|-)\d{4} \n". + " ------------------------------- ---------- --------------------------------- \n". "\n/", $tester->getDisplay(true)); } } diff --git a/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php b/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php index 7057cb07da7b5..d668b7d03b02b 100644 --- a/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php +++ b/src/Symfony/Component/Scheduler/Tests/RecurringMessageTest.php @@ -20,12 +20,7 @@ class RecurringMessageTest extends TestCase { public function testCanCreateHashedCronMessage() { - $object = new class() { - public function __toString(): string - { - return 'my task'; - } - }; + $object = new DummyStringableMessage(); if (class_exists(Randomizer::class)) { $this->assertSame('30 0 * * *', (string) RecurringMessage::cron('#midnight', $object)->getTrigger()); @@ -52,3 +47,11 @@ public function testUniqueId() $this->assertNotSame($message1->getId(), $message2->getId()); } } + +class DummyStringableMessage implements \Stringable +{ + public function __toString(): string + { + return 'my task'; + } +} diff --git a/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackMessageProviderTest.php b/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackMessageProviderTest.php index 3c155014b3ba0..07afe996bc0da 100644 --- a/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackMessageProviderTest.php +++ b/src/Symfony/Component/Scheduler/Tests/Trigger/CallbackMessageProviderTest.php @@ -29,8 +29,9 @@ public function testToString() $this->assertEquals([new \stdClass()], $messageProvider->getMessages($context)); $this->assertSame('', $messageProvider->getId()); - $messageProvider = new CallbackMessageProvider(fn () => yield new \stdClass(), 'foo'); + $messageProvider = new CallbackMessageProvider(fn () => yield new \stdClass(), 'foo', 'bar'); $this->assertInstanceOf(\Generator::class, $messageProvider->getMessages($context)); $this->assertSame('foo', $messageProvider->getId()); + $this->assertSame('bar', (string) $messageProvider); } } diff --git a/src/Symfony/Component/Scheduler/Trigger/CallbackMessageProvider.php b/src/Symfony/Component/Scheduler/Trigger/CallbackMessageProvider.php index f3c4e329a3da8..3357d964720f3 100644 --- a/src/Symfony/Component/Scheduler/Trigger/CallbackMessageProvider.php +++ b/src/Symfony/Component/Scheduler/Trigger/CallbackMessageProvider.php @@ -13,14 +13,14 @@ use Symfony\Component\Scheduler\Generator\MessageContext; -final class CallbackMessageProvider implements MessageProviderInterface +final class CallbackMessageProvider implements MessageProviderInterface, \Stringable { private \Closure $callback; /** * @param callable(MessageContext): iterable $callback */ - public function __construct(callable $callback, private string $id = '') + public function __construct(callable $callback, private string $id = '', private string $description = '') { $this->callback = $callback(...); } @@ -34,4 +34,9 @@ public function getId(): string { return $this->id; } + + public function __toString(): string + { + return $this->description ?: $this->id; + } } diff --git a/src/Symfony/Component/Scheduler/Trigger/StaticMessageProvider.php b/src/Symfony/Component/Scheduler/Trigger/StaticMessageProvider.php index 88f21e464a376..7f819c5ed2d4d 100644 --- a/src/Symfony/Component/Scheduler/Trigger/StaticMessageProvider.php +++ b/src/Symfony/Component/Scheduler/Trigger/StaticMessageProvider.php @@ -13,7 +13,7 @@ use Symfony\Component\Scheduler\Generator\MessageContext; -final class StaticMessageProvider implements MessageProviderInterface +final class StaticMessageProvider implements MessageProviderInterface, \Stringable { /** * @param array $messages @@ -21,6 +21,7 @@ final class StaticMessageProvider implements MessageProviderInterface public function __construct( private array $messages, private string $id = '', + private string $description = '', ) { } @@ -33,4 +34,9 @@ public function getId(): string { return $this->id; } + + public function __toString(): string + { + return $this->description ?: $this->id; + } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy