From c02a30e099696ed8dbab3e1a7d1ef5be6c69e86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Nowak?= Date: Tue, 22 Sep 2026 15:31:02 +0200 Subject: [PATCH 1/2] IBX-12654: Added ibexa/phpstan to the PHPStan configuration --- composer.json | 1 + phpstan.neon | 1 + 2 files changed, 2 insertions(+) diff --git a/composer.json b/composer.json index e9e86cb5..db19f7c4 100644 --- a/composer.json +++ b/composer.json @@ -40,6 +40,7 @@ "ibexa/doctrine-schema": "~6.0.x-dev", "ibexa/http-cache": "~6.0.x-dev", "ibexa/notifications": "~6.0.x-dev", + "ibexa/phpstan": "~6.0.x-dev", "ibexa/rector": "~6.0.x-dev", "ibexa/search": "~6.0.x-dev", "ibexa/twig-components": "~6.0.x-dev", diff --git a/phpstan.neon b/phpstan.neon index 4edb42d8..be5e02d9 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -2,6 +2,7 @@ includes: - phpstan-baseline.neon - vendor/phpstan/phpstan-phpunit/extension.neon - vendor/phpstan/phpstan-symfony/extension.neon + - vendor/ibexa/phpstan/extension.neon parameters: level: 8 From 4ac5e709d5c83b7d5a9892de11be590d25adb719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Nowak?= Date: Tue, 22 Sep 2026 15:35:24 +0200 Subject: [PATCH 2/2] IBX-12654: Fixed issues reported by ibexa/phpstan rules --- src/lib/DataLoader/SearchContentLoader.php | 2 +- src/lib/DataLoader/SearchLocationLoader.php | 2 +- src/lib/InputMapper/SearchQueryMapper.php | 2 +- src/lib/Relay/SearchResolver.php | 3 ++- src/lib/Resolver/ContentResolver.php | 4 ++-- src/lib/Resolver/DomainContentResolver.php | 2 +- src/lib/Resolver/ItemResolver.php | 4 ++-- src/lib/Resolver/LocationResolver.php | 4 ++-- src/lib/Resolver/SearchResolver.php | 4 ++-- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/lib/DataLoader/SearchContentLoader.php b/src/lib/DataLoader/SearchContentLoader.php index e3e9b424..2914847c 100644 --- a/src/lib/DataLoader/SearchContentLoader.php +++ b/src/lib/DataLoader/SearchContentLoader.php @@ -39,7 +39,7 @@ public function __construct(SearchService $searchService) public function find(Query $query): array { return array_map( - static function (SearchHit $searchHit) { + static function (SearchHit $searchHit): Content { return $searchHit->valueObject; }, $this->searchService->findContent($query)->searchHits diff --git a/src/lib/DataLoader/SearchLocationLoader.php b/src/lib/DataLoader/SearchLocationLoader.php index 24ee5f31..a3f32248 100644 --- a/src/lib/DataLoader/SearchLocationLoader.php +++ b/src/lib/DataLoader/SearchLocationLoader.php @@ -46,7 +46,7 @@ public function __construct(SearchService $searchService, LocationService $locat public function find(LocationQuery $query): array { return array_map( - static function (SearchHit $searchHit) { + static function (SearchHit $searchHit): Location { return $searchHit->valueObject; }, $this->searchService->findLocations($query)->searchHits diff --git a/src/lib/InputMapper/SearchQueryMapper.php b/src/lib/InputMapper/SearchQueryMapper.php index ea5d1b40..e302b467 100644 --- a/src/lib/InputMapper/SearchQueryMapper.php +++ b/src/lib/InputMapper/SearchQueryMapper.php @@ -81,7 +81,7 @@ private function mapInput(LocationQuery|Query $query, array $inputArray): void $criteria = array_merge( $criteria, array_map( - function ($input) { + function ($input): Field { return $this->mapInputToFieldCriterion($input); }, $inputArray['Field'] diff --git a/src/lib/Relay/SearchResolver.php b/src/lib/Relay/SearchResolver.php index 6e09e32c..2946a0f3 100644 --- a/src/lib/Relay/SearchResolver.php +++ b/src/lib/Relay/SearchResolver.php @@ -8,6 +8,7 @@ namespace Ibexa\GraphQL\Relay; use Ibexa\Contracts\Core\Repository\SearchService; +use Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo; use Ibexa\Contracts\Core\Repository\Values\Content\Query; use Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchHit; use Overblog\GraphQLBundle\Relay\Connection\ConnectionBuilder; @@ -62,7 +63,7 @@ public function searchContent(array $args): ConnectionInterface $searchResult = $this->searchService->findContentInfo($query); $contentItems = array_map( - static function (SearchHit $hit) { + static function (SearchHit $hit): ContentInfo { return $hit->valueObject; }, $searchResult->searchHits diff --git a/src/lib/Resolver/ContentResolver.php b/src/lib/Resolver/ContentResolver.php index 3c1744ce..00d34d54 100644 --- a/src/lib/Resolver/ContentResolver.php +++ b/src/lib/Resolver/ContentResolver.php @@ -47,7 +47,7 @@ public function findContentByType($contentTypeId): array ); return array_map( - static function (SearchHit $searchHit) { + static function (SearchHit $searchHit): ContentInfo { return $searchHit->valueObject; }, $searchResults->searchHits @@ -111,7 +111,7 @@ public function resolveContentByIdList(array $contentIdList): array } return array_map( - static function (SearchHit $searchHit) { + static function (SearchHit $searchHit): ContentInfo { return $searchHit->valueObject; }, $searchResults->searchHits diff --git a/src/lib/Resolver/DomainContentResolver.php b/src/lib/Resolver/DomainContentResolver.php index 5db58318..7b62f1f1 100644 --- a/src/lib/Resolver/DomainContentResolver.php +++ b/src/lib/Resolver/DomainContentResolver.php @@ -142,7 +142,7 @@ public function resolveDomainRelationFieldValue(?Field $field, $multiple = false if ($multiple) { return array_map( - static function ($contentId) use ($contentItems) { + static function ($contentId) use ($contentItems): Content { return $contentItems[array_search($contentId, array_column($contentItems, 'id'))]; }, $destinationContentIds diff --git a/src/lib/Resolver/ItemResolver.php b/src/lib/Resolver/ItemResolver.php index a508445e..4d024e5d 100644 --- a/src/lib/Resolver/ItemResolver.php +++ b/src/lib/Resolver/ItemResolver.php @@ -136,7 +136,7 @@ public function resolveItemsOfTypeAsConnection(string $contentTypeIdentifier, Ar $query->limit = $limit ?? 10; return array_map( - function (Content $content) { + function (Content $content): Item { return $this->itemFactory->fromContent($content); }, $this->contentLoader->find($query) @@ -145,7 +145,7 @@ function (Content $content) { return $paginator->auto( $args, - function () use ($query) { + function () use ($query): int { return $this->contentLoader->count($query); } ); diff --git a/src/lib/Resolver/LocationResolver.php b/src/lib/Resolver/LocationResolver.php index 2e83af3a..c3e9bac7 100644 --- a/src/lib/Resolver/LocationResolver.php +++ b/src/lib/Resolver/LocationResolver.php @@ -90,7 +90,7 @@ public function resolveLocationChildren($locationId, Argument $args): PageAwareC 'sortClauses' => $sortClauses, ]); - $paginator = new Paginator(function ($offset, $limit) use ($query) { + $paginator = new Paginator(function ($offset, $limit) use ($query): array { $query->offset = $offset; $query->limit = $limit ?? self::DEFAULT_LIMIT; @@ -100,7 +100,7 @@ public function resolveLocationChildren($locationId, Argument $args): PageAwareC return PageAwareConnection::fromConnection( $paginator->auto( $args, - function () use ($query) { + function () use ($query): int { return $this->locationLoader->count($query); } ), diff --git a/src/lib/Resolver/SearchResolver.php b/src/lib/Resolver/SearchResolver.php index 80e36777..e572623d 100644 --- a/src/lib/Resolver/SearchResolver.php +++ b/src/lib/Resolver/SearchResolver.php @@ -64,7 +64,7 @@ public function searchContentOfTypeAsConnection($contentTypeIdentifier, Argument $query['sortBy'] = $args['sortBy']; $query = $this->queryMapper->mapInputToQuery($query); - $paginator = new Paginator(function ($offset, $limit) use ($query) { + $paginator = new Paginator(function ($offset, $limit) use ($query): array { $query->offset = $offset; $query->limit = $limit ?? 10; @@ -73,7 +73,7 @@ public function searchContentOfTypeAsConnection($contentTypeIdentifier, Argument return $paginator->auto( $args, - function () use ($query) { + function () use ($query): int { return $this->contentLoader->count($query); } );