From 677026b7173cb1641b3b1c12dabff7644afae113 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Thu, 27 Nov 2025 17:31:52 +0100 Subject: [PATCH 1/3] Fix phpdoc for phpstan --- src/Doctrine/Odm/Filter/FilterInterface.php | 4 +++- src/Doctrine/Orm/Filter/FilterInterface.php | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Doctrine/Odm/Filter/FilterInterface.php b/src/Doctrine/Odm/Filter/FilterInterface.php index 4395a25df55..9019cdb7548 100644 --- a/src/Doctrine/Odm/Filter/FilterInterface.php +++ b/src/Doctrine/Odm/Filter/FilterInterface.php @@ -28,7 +28,9 @@ interface FilterInterface extends BaseFilterInterface /** * Applies the filter. * - * @param array|array{filters?: array|array, parameter?: Parameter, mongodb_odm_sort_fields?: array, ...} $context + * @phpstan-param array $context + * + * @psalm-param array{filters?: array, parameter?: Parameter, mongodb_odm_sort_fields?: array, ...} $context */ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void; } diff --git a/src/Doctrine/Orm/Filter/FilterInterface.php b/src/Doctrine/Orm/Filter/FilterInterface.php index 7539574ff37..e01a248b573 100644 --- a/src/Doctrine/Orm/Filter/FilterInterface.php +++ b/src/Doctrine/Orm/Filter/FilterInterface.php @@ -29,7 +29,9 @@ interface FilterInterface extends BaseFilterInterface /** * Applies the filter. * - * @param array{filters?: array|array, parameter?: Parameter, ...} $context + * @phpstan-param array $context + * + * @param array{filters?: array, parameter?: Parameter, ...} $context */ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void; } From f86583325f2b3aa7df4d314ee16ed1ae2a6b74e9 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Thu, 4 Dec 2025 09:05:47 +0100 Subject: [PATCH 2/3] Fix --- src/Doctrine/Orm/Filter/FilterInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Doctrine/Orm/Filter/FilterInterface.php b/src/Doctrine/Orm/Filter/FilterInterface.php index e01a248b573..131488e3cdd 100644 --- a/src/Doctrine/Orm/Filter/FilterInterface.php +++ b/src/Doctrine/Orm/Filter/FilterInterface.php @@ -31,7 +31,7 @@ interface FilterInterface extends BaseFilterInterface * * @phpstan-param array $context * - * @param array{filters?: array, parameter?: Parameter, ...} $context + * @psalm-param array{filters?: array, parameter?: Parameter, ...} $context */ public function apply(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, ?Operation $operation = null, array $context = []): void; } From 360817da665d64f0b3d46ec6188ae756928b0641 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Thu, 4 Dec 2025 09:12:31 +0100 Subject: [PATCH 3/3] Fix --- phpstan.neon.dist | 7 ------- src/Doctrine/Odm/Filter/AbstractFilter.php | 4 ++++ src/Doctrine/Odm/Filter/FilterInterface.php | 2 ++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 2165b919de2..5eb2ef1279a 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -103,13 +103,6 @@ parameters: # Allow extra assertions in tests: https://github.com/phpstan/phpstan-strict-rules/issues/130 - '#^Call to (static )?method PHPUnit\\Framework\\Assert::.* will always evaluate to true\.$#' - # Unsealed array shapes not supported - - - message: '#^Parameter &\$context by\-ref type of method ApiPlatform\\Doctrine\\Odm\\Extension\\ParameterExtension\:\:applyFilter\(\) expects array\, array(.*) given\.$#' - identifier: parameterByRef.type - count: 5 - path: src/Doctrine/Odm/Extension/ParameterExtension.php - # Level 6 - identifier: missingType.iterableValue diff --git a/src/Doctrine/Odm/Filter/AbstractFilter.php b/src/Doctrine/Odm/Filter/AbstractFilter.php index fd5ea562c63..75b85b9ac47 100644 --- a/src/Doctrine/Odm/Filter/AbstractFilter.php +++ b/src/Doctrine/Odm/Filter/AbstractFilter.php @@ -59,6 +59,10 @@ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Opera /** * Passes a property through the filter. + * + * @param array $context + * + * @param-out array $context */ abstract protected function filterProperty(string $property, mixed $value, Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void; diff --git a/src/Doctrine/Odm/Filter/FilterInterface.php b/src/Doctrine/Odm/Filter/FilterInterface.php index 9019cdb7548..b979af3fbb1 100644 --- a/src/Doctrine/Odm/Filter/FilterInterface.php +++ b/src/Doctrine/Odm/Filter/FilterInterface.php @@ -31,6 +31,8 @@ interface FilterInterface extends BaseFilterInterface * @phpstan-param array $context * * @psalm-param array{filters?: array, parameter?: Parameter, mongodb_odm_sort_fields?: array, ...} $context + * + * @param-out array $context */ public function apply(Builder $aggregationBuilder, string $resourceClass, ?Operation $operation = null, array &$context = []): void; }