From 60dfc7f1653c6ac5bfdebd5c7c3f6bb7a7e6ba56 Mon Sep 17 00:00:00 2001 From: Kevin Bond Date: Wed, 29 Mar 2023 16:25:57 -0400 Subject: [PATCH] [Scheduler] have `TriggerInterface` extend `\Stringable` --- .../Scheduler/Tests/Generator/MessageGeneratorTest.php | 5 +++++ .../Component/Scheduler/Trigger/CallbackTrigger.php | 5 +++++ .../Scheduler/Trigger/CronExpressionTrigger.php | 2 +- .../Component/Scheduler/Trigger/DatePeriodTrigger.php | 10 ++++++++++ .../Component/Scheduler/Trigger/ExcludeTimeTrigger.php | 5 +++++ .../Component/Scheduler/Trigger/TriggerInterface.php | 2 +- 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Scheduler/Tests/Generator/MessageGeneratorTest.php b/src/Symfony/Component/Scheduler/Tests/Generator/MessageGeneratorTest.php index 8b6900b8bb037..c3aabec72812e 100644 --- a/src/Symfony/Component/Scheduler/Tests/Generator/MessageGeneratorTest.php +++ b/src/Symfony/Component/Scheduler/Tests/Generator/MessageGeneratorTest.php @@ -135,6 +135,11 @@ public static function messagesProvider(): \Generator ], 'schedule' => [ RecurringMessage::trigger(new class() implements TriggerInterface { + public function __toString(): string + { + return 'foo'; + } + public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable { return null; diff --git a/src/Symfony/Component/Scheduler/Trigger/CallbackTrigger.php b/src/Symfony/Component/Scheduler/Trigger/CallbackTrigger.php index 353d53d456a1c..311fc9f2b178c 100644 --- a/src/Symfony/Component/Scheduler/Trigger/CallbackTrigger.php +++ b/src/Symfony/Component/Scheduler/Trigger/CallbackTrigger.php @@ -25,6 +25,11 @@ public function __construct(callable $callback) $this->callback = $callback(...); } + public function __toString(): string + { + return spl_object_hash($this->callback); + } + public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable { return ($this->callback)($run); diff --git a/src/Symfony/Component/Scheduler/Trigger/CronExpressionTrigger.php b/src/Symfony/Component/Scheduler/Trigger/CronExpressionTrigger.php index 3a53bbc2c1a43..f1a1c0edad5bb 100644 --- a/src/Symfony/Component/Scheduler/Trigger/CronExpressionTrigger.php +++ b/src/Symfony/Component/Scheduler/Trigger/CronExpressionTrigger.php @@ -21,7 +21,7 @@ * * @experimental */ -final class CronExpressionTrigger implements TriggerInterface, \Stringable +final class CronExpressionTrigger implements TriggerInterface { public function __construct( private readonly CronExpression $expression = new CronExpression('* * * * *'), diff --git a/src/Symfony/Component/Scheduler/Trigger/DatePeriodTrigger.php b/src/Symfony/Component/Scheduler/Trigger/DatePeriodTrigger.php index 9d17af05ae69b..a292fcea1efe6 100644 --- a/src/Symfony/Component/Scheduler/Trigger/DatePeriodTrigger.php +++ b/src/Symfony/Component/Scheduler/Trigger/DatePeriodTrigger.php @@ -21,6 +21,16 @@ public function __construct( ) { } + public function __toString(): string + { + return sprintf( + '%s - %s, %s', + $this->period->getStartDate()->format(\DateTimeInterface::ATOM), + $this->period->getEndDate()?->format(\DateTimeInterface::ATOM) ?? '(inf)', + '-', + ); + } + public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable { $iterator = $this->period->getIterator(); diff --git a/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php b/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php index 6ddefb8bcb4e8..619d3dccb9618 100644 --- a/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php +++ b/src/Symfony/Component/Scheduler/Trigger/ExcludeTimeTrigger.php @@ -23,6 +23,11 @@ public function __construct( ) { } + public function __toString(): string + { + return sprintf('%s, from: %s, until: %s', $this->inner, $this->from->format(\DateTimeInterface::ATOM), $this->until->format(\DateTimeInterface::ATOM)); + } + public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable { $nextRun = $this->inner->getNextRunDate($run); diff --git a/src/Symfony/Component/Scheduler/Trigger/TriggerInterface.php b/src/Symfony/Component/Scheduler/Trigger/TriggerInterface.php index 5fd07e9a610cb..12c6a779ae8e3 100644 --- a/src/Symfony/Component/Scheduler/Trigger/TriggerInterface.php +++ b/src/Symfony/Component/Scheduler/Trigger/TriggerInterface.php @@ -14,7 +14,7 @@ /** * @experimental */ -interface TriggerInterface +interface TriggerInterface extends \Stringable { public function getNextRunDate(\DateTimeImmutable $run): ?\DateTimeImmutable; }