Skip to content

Commit 9bbb1d4

Browse files
committed
minor #157 use PHPStan 2 (xabbuh)
This PR was merged into the 0.4-dev branch. Discussion ---------- use PHPStan 2 Commits ------- 5828faa use PHPStan 2
2 parents 7410a59 + 5828faa commit 9bbb1d4

File tree

11 files changed

+71
-12
lines changed

11 files changed

+71
-12
lines changed

.github/workflows/ci.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ jobs:
4242

4343
- name: 'Install dependencies'
4444
uses: php-actions/composer@v6
45+
with:
46+
php_version: '8.1'
4547

4648
- name: 'Run PhpStan'
47-
uses: 'php-actions/phpstan@v3'
48-
with:
49-
configuration: 'phpstan.neon'
50-
level: max
49+
run: |
50+
vendor/bin/phpstan analyze
5151
5252
tests:
5353
name: 'PHPUnit'

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/.php-cs-fixer.php
22
/.php-cs-fixer.cache
3+
/phpstan.neon
34
/.phpunit.result.cache
45
/composer.lock
56
/phpunit.xml

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"symfony/property-access": "^6.4||^7.0"
2727
},
2828
"require-dev": {
29+
"phpstan/phpstan": "^2.1",
2930
"symfony/phpunit-bridge": "^6.4||^7.0",
3031
"symfony/translation": "^6.4||^7.0"
3132
},

phpstan-baseline.neon

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
parameters:
2+
ignoreErrors:
3+
-
4+
message: '#^Parameter \#1 \$objectOrArray of method Symfony\\Component\\PropertyAccess\\PropertyAccessorInterface\:\:setValue\(\) expects array\|object, mixed given\.$#'
5+
identifier: argument.type
6+
count: 1
7+
path: src/Qossmic/DataMapper/DataMapper.php
8+
9+
-
10+
message: '#^Class Qossmic\\RichModelForms\\DataTransformer\\ValueObjectTransformer implements generic interface Symfony\\Component\\Form\\DataTransformerInterface but does not specify its types\: TValue, TTransformedValue$#'
11+
identifier: missingType.generics
12+
count: 1
13+
path: src/Qossmic/DataTransformer/ValueObjectTransformer.php
14+
15+
-
16+
message: '#^Method Qossmic\\RichModelForms\\DataTransformer\\ValueObjectTransformer\:\:getPropertyValue\(\) should return bool\|int\|string\|null but returns mixed\.$#'
17+
identifier: return.type
18+
count: 1
19+
path: src/Qossmic/DataTransformer/ValueObjectTransformer.php
20+
21+
-
22+
message: '#^Cannot access offset ''strategy'' on mixed\.$#'
23+
identifier: offsetAccess.nonOffsetAccessible
24+
count: 1
25+
path: src/Qossmic/DependencyInjection/Compiler/RegisterExceptionHandlersPass.php
26+
27+
-
28+
message: '#^Parameter \#1 \$strategy of method Qossmic\\RichModelForms\\ExceptionHandling\\ExceptionHandlerRegistry\:\:has\(\) expects string, mixed given\.$#'
29+
identifier: argument.type
30+
count: 1
31+
path: src/Qossmic/Extension/RichModelFormsTypeExtension.php
32+
33+
-
34+
message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#'
35+
identifier: argument.type
36+
count: 1
37+
path: src/Qossmic/Extension/RichModelFormsTypeExtension.php

phpstan.dist.neon

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
includes:
2+
- phpstan-baseline.neon
3+
4+
parameters:
5+
inferPrivatePropertyTypeFromConstructor: true
6+
level: max
7+
paths:
8+
- src

phpstan.neon

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/Qossmic/ExceptionHandling/ChainExceptionHandler.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
*/
3131
final class ChainExceptionHandler implements ExceptionHandlerInterface
3232
{
33+
/** @var ExceptionHandlerInterface[] */
3334
private iterable $exceptionHandlers;
3435

3536
/**

src/Qossmic/ExceptionHandling/Error.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@ final class Error
2222
{
2323
private \Throwable $cause;
2424
private string $messageTemplate;
25+
/** @var array<string, string> */
2526
private array $parameters;
2627

28+
/**
29+
* @param array<string, string> $parameters
30+
*/
2731
public function __construct(\Throwable $cause, string $messageTemplate, array $parameters = [])
2832
{
2933
$this->cause = $cause;
@@ -41,6 +45,9 @@ public function getMessageTemplate(): string
4145
return $this->messageTemplate;
4246
}
4347

48+
/**
49+
* @return array<string, string>
50+
*/
4451
public function getParameters(): array
4552
{
4653
return $this->parameters;

src/Qossmic/Instantiator/FormDataInstantiator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ final class FormDataInstantiator extends ObjectInstantiator
2727
private array $formNameForArgument;
2828

2929
/**
30-
* @param class-string|\Closure|(callable&array) $factory
30+
* @param class-string|\Closure|((callable(): object)&array{0: class-string|object, 1: string}) $factory
3131
*/
3232
public function __construct(string|callable $factory, FormInterface $form)
3333
{

src/Qossmic/Instantiator/ObjectInstantiator.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222
*/
2323
abstract class ObjectInstantiator
2424
{
25+
/** @var class-string|(\Closure(): object)|((callable(): object)&array{0: class-string|object, 1: string}) */
2526
private mixed $factory;
2627

28+
/**
29+
* @param class-string|(\Closure(): object)|((callable(): object)&array{0: class-string|object, 1: string}) $factory
30+
*/
2731
public function __construct(mixed $factory)
2832
{
2933
$this->factory = $factory;
@@ -42,7 +46,8 @@ public function instantiateObject(): ?object
4246
if (!$factoryMethod->isPublic()) {
4347
throw new TransformationFailedException(\sprintf('The factory method %s() is not public.', $factoryMethodAsString));
4448
}
45-
} elseif (\is_array($this->factory) && \is_callable($this->factory)) {
49+
} elseif (\is_array($this->factory)) {
50+
/** @var class-string $class */
4651
$class = \is_object($this->factory[0]) ? \get_class($this->factory[0]) : $this->factory[0];
4752
$factoryMethod = (new \ReflectionMethod($class, $this->factory[1]));
4853
$factoryMethodAsString = $class.'::'.$this->factory[1];
@@ -70,6 +75,7 @@ public function instantiateObject(): ?object
7075
return new $this->factory(...$arguments);
7176
}
7277

78+
/* @phpstan-ignore-next-line */
7379
return ($this->factory)(...$arguments);
7480
}
7581

0 commit comments

Comments
 (0)