From 6c09d960182b668016ef8292d176070e5b89314c Mon Sep 17 00:00:00 2001 From: ADmad Date: Wed, 29 Oct 2025 21:30:10 +0530 Subject: [PATCH 1/3] Use match() instead of switch/case. Also improve docblock type --- src/FormattingTrait.php | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/FormattingTrait.php b/src/FormattingTrait.php index edb5291..2a955c5 100644 --- a/src/FormattingTrait.php +++ b/src/FormattingTrait.php @@ -250,7 +250,7 @@ public function toQuarter(bool $range = false): int|array trigger_error( 'Using toQuarter() with `$range=true` is deprecated. Use `toQuarterRange()` instead.', - E_USER_DEPRECATED + E_USER_DEPRECATED, ); return $this->toQuarterRange(); @@ -259,23 +259,19 @@ public function toQuarter(bool $range = false): int|array /** * Returns the quarter range * - * @return array Array with start and end date of quarter in Y-m-d format + * @return array{0: string, 1: string} Array with start and end date of quarter in Y-m-d format */ public function toQuarterRange(): array { $quarter = (int)ceil((int)$this->format('m') / 3); $year = $this->format('Y'); - switch ($quarter) { - case 1: - return [$year . '-01-01', $year . '-03-31']; - case 2: - return [$year . '-04-01', $year . '-06-30']; - case 3: - return [$year . '-07-01', $year . '-09-30']; - default: - return [$year . '-10-01', $year . '-12-31']; - } + return match ($quarter) { + 1 => [$year . '-01-01', $year . '-03-31'], + 2 => [$year . '-04-01', $year . '-06-30'], + 3 => [$year . '-07-01', $year . '-09-30'], + default => [$year . '-10-01', $year . '-12-31'], + }; } /** From 8e5d45578e11090d64bbb4ae93a9cc0f453a41ca Mon Sep 17 00:00:00 2001 From: ADmad Date: Wed, 29 Oct 2025 21:37:24 +0530 Subject: [PATCH 2/3] Fix CS error --- src/FormattingTrait.php | 4 +++- tests/TestCase/DateTime/StringsTest.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/FormattingTrait.php b/src/FormattingTrait.php index 2a955c5..7598842 100644 --- a/src/FormattingTrait.php +++ b/src/FormattingTrait.php @@ -15,6 +15,7 @@ namespace Cake\Chronos; use DateTime; +use UnexpectedValueException; /** * Provides string formatting methods for datetime instances. @@ -270,7 +271,8 @@ public function toQuarterRange(): array 1 => [$year . '-01-01', $year . '-03-31'], 2 => [$year . '-04-01', $year . '-06-30'], 3 => [$year . '-07-01', $year . '-09-30'], - default => [$year . '-10-01', $year . '-12-31'], + 4 => [$year . '-10-01', $year . '-12-31'], + default => throw new UnexpectedValueException('Quarter can only be a value between 1-4'), }; } diff --git a/tests/TestCase/DateTime/StringsTest.php b/tests/TestCase/DateTime/StringsTest.php index a4a4850..9e245fe 100644 --- a/tests/TestCase/DateTime/StringsTest.php +++ b/tests/TestCase/DateTime/StringsTest.php @@ -205,7 +205,7 @@ public static function toQuarterRangeProvider() public function testToQuarterRange($date, $expected) { $this->assertSame($expected, (new Chronos($date))->toQuarterRange()); - $this->deprecated(function() use ($date, $expected) { + $this->deprecated(function () use ($date, $expected) { $this->assertSame($expected, (new Chronos($date))->toQuarter(true)); }); } From 81e7e71ab48ccaf35b3cb9cd428fce2459b6417f Mon Sep 17 00:00:00 2001 From: ADmad Date: Thu, 30 Oct 2025 18:33:26 +0530 Subject: [PATCH 3/3] Remove impossible "default" case --- src/FormattingTrait.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/FormattingTrait.php b/src/FormattingTrait.php index 7598842..7b4fbae 100644 --- a/src/FormattingTrait.php +++ b/src/FormattingTrait.php @@ -15,7 +15,6 @@ namespace Cake\Chronos; use DateTime; -use UnexpectedValueException; /** * Provides string formatting methods for datetime instances. @@ -264,6 +263,7 @@ public function toQuarter(bool $range = false): int|array */ public function toQuarterRange(): array { + /** @var int<1, 4> $quarter */ $quarter = (int)ceil((int)$this->format('m') / 3); $year = $this->format('Y'); @@ -272,7 +272,6 @@ public function toQuarterRange(): array 2 => [$year . '-04-01', $year . '-06-30'], 3 => [$year . '-07-01', $year . '-09-30'], 4 => [$year . '-10-01', $year . '-12-31'], - default => throw new UnexpectedValueException('Quarter can only be a value between 1-4'), }; }