From f21bb125c5b01a9e5cd572c77dca0e8d5cc13849 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sun, 4 May 2025 22:37:31 +0100 Subject: [PATCH] Bump PHPStan to level 9 --- phpstan.neon.dist | 2 +- src/Experience/TwigExtension/ExperienceTwigExtension.php | 4 ++-- src/Presentation/Collection/Collection.php | 4 ++++ src/Presentation/Collection/PresentationCollection.php | 9 +++++++++ .../TwigExtension/PresentationTwigExtension.php | 4 ++++ .../TwigExtension/PresentationTwigExtensionTest.php | 4 ++++ 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 550f66f59..730e44767 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,5 +1,5 @@ parameters: - level: 5 + level: 9 paths: - src - tests diff --git a/src/Experience/TwigExtension/ExperienceTwigExtension.php b/src/Experience/TwigExtension/ExperienceTwigExtension.php index 56886e563..311a2b058 100644 --- a/src/Experience/TwigExtension/ExperienceTwigExtension.php +++ b/src/Experience/TwigExtension/ExperienceTwigExtension.php @@ -8,7 +8,7 @@ use Twig\TwigFunction; class ExperienceTwigExtension extends AbstractExtension { - private static $startYear = 2007; + private static int $startYear = 2007; public function getFunctions(): array { @@ -24,6 +24,6 @@ class ExperienceTwigExtension extends AbstractExtension public function getYearsOfExperience(): int { - return (new \DateTimeImmutable())->format('Y') - self::$startYear; + return (int) (new \DateTimeImmutable())->format('Y') - self::$startYear; } } diff --git a/src/Presentation/Collection/Collection.php b/src/Presentation/Collection/Collection.php index a4a0801a0..f938a83ab 100644 --- a/src/Presentation/Collection/Collection.php +++ b/src/Presentation/Collection/Collection.php @@ -10,6 +10,7 @@ use Iterator; use IteratorAggregate; /** + * @implements IteratorAggregate * @template TItem */ class Collection implements Countable, IteratorAggregate @@ -26,6 +27,9 @@ class Collection implements Countable, IteratorAggregate return count($this->items); } + /** + * @return self + */ public function filter(callable $callback): self { return new static( diff --git a/src/Presentation/Collection/PresentationCollection.php b/src/Presentation/Collection/PresentationCollection.php index 6f33a1b6e..3742455e0 100644 --- a/src/Presentation/Collection/PresentationCollection.php +++ b/src/Presentation/Collection/PresentationCollection.php @@ -7,8 +7,14 @@ namespace App\Presentation\Collection; use DateTimeImmutable; use Sculpin\Contrib\ProxySourceCollection\ProxySourceItem; +/** + * @extends Collection + */ final class PresentationCollection extends Collection { + /** + * @return Collection + */ public function getAllEvents(): Collection { $events = array_reduce( @@ -24,6 +30,9 @@ final class PresentationCollection extends Collection return new Collection(array_merge(...$events)); } + /** + * @return Collection + */ public function getPastEvents(): Collection { $today = new DateTimeImmutable('today'); diff --git a/src/Presentation/TwigExtension/PresentationTwigExtension.php b/src/Presentation/TwigExtension/PresentationTwigExtension.php index e5d047a09..577efebb3 100644 --- a/src/Presentation/TwigExtension/PresentationTwigExtension.php +++ b/src/Presentation/TwigExtension/PresentationTwigExtension.php @@ -21,6 +21,10 @@ class PresentationTwigExtension extends AbstractExtension return 'presentations'; } + + /** + * @param ProxySourceItem[] $presentations + */ public function getPresentationCount(array $presentations): int { $presentationCollection = new PresentationCollection($presentations); diff --git a/tests/Presentation/TwigExtension/PresentationTwigExtensionTest.php b/tests/Presentation/TwigExtension/PresentationTwigExtensionTest.php index 767873338..6a60f0153 100644 --- a/tests/Presentation/TwigExtension/PresentationTwigExtensionTest.php +++ b/tests/Presentation/TwigExtension/PresentationTwigExtensionTest.php @@ -116,6 +116,8 @@ class PresentationTwigExtensionTest extends TestCase /** * Assert the extension uses the correct number of presentations. + * + * @param ProxySourceItem[] $presentations */ private function assertPresentationCount(int $expectedCount, array $presentations): void { @@ -127,6 +129,8 @@ class PresentationTwigExtensionTest extends TestCase /** * Create a mock presentation with a list of events. + * + * @param array{date: int}[] $events */ private function createPresentation(array $events): ProxySourceItem {