Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.89",
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-symfony": "^1.1",
"phpstan/phpstan": "^2.1",
"sbsedv/form-bundle": "^1.7",
"symfony/validator": "^7.0"
},
Expand All @@ -35,9 +33,6 @@
}
},
"config": {
"sort-packages": true,
"allow-plugins": {
"phpstan/extension-installer": true
}
"sort-packages": true
}
}
2 changes: 1 addition & 1 deletion config/definitions/event_listener.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Symfony\Component\Config\Definition\Configurator;

return function (DefinitionConfigurator $definition): void {
$definition
$definition // @phpstan-ignore method.notFound
->rootNode()
->children()
->arrayNode('event_listeners')
Expand Down
2 changes: 1 addition & 1 deletion config/definitions/other.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Symfony\Component\Config\Definition\Configurator;

return function (DefinitionConfigurator $definition): void {
$definition
$definition // @phpstan-ignore method.notFound
->rootNode()
->children()
->booleanNode('exception_normalizer')->defaultTrue()->end()
Expand Down
6 changes: 6 additions & 0 deletions phpstan.dist.neon
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
parameters:
level: 9

paths:
- src/
- config/
10 changes: 0 additions & 10 deletions phpstan.neon

This file was deleted.

3 changes: 2 additions & 1 deletion src/EventListener/InvalidFormExceptionEventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Translation\TranslatableMessage;
use Symfony\Contracts\Translation\TranslatableInterface;

class InvalidFormExceptionEventListener implements EventSubscriberInterface
{
Expand Down Expand Up @@ -43,7 +44,7 @@ public function __invoke(ExceptionEvent $event): void

$errors = [];

/** @var array $formError */
/** @var array{'message': string|TranslatableInterface, 'cause'?: string, 'type'?: string, 'cause'?: string} $formError */
foreach ($formErrors as $formError) {
$dto = new ApiResponseErrorDto($formError['message'], 'invalid_request_error', $formError['cause'] ?? null);

Expand Down
4 changes: 4 additions & 0 deletions src/Exception/AccessDeniedException.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@

class AccessDeniedException extends HttpException
{
/**
* @param array<string, string|string[]> $headers
* @param array<array-key, mixed> $other
*/
public function __construct(
TranslatableInterface|string $message = 'Access denied.',
?\Throwable $previous = null,
Expand Down
4 changes: 3 additions & 1 deletion src/Exception/BundledHttpException.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
class BundledHttpException extends HttpException
{
/**
* @param HttpException[] $exceptions The exceptions to bundle.
* @param HttpException[] $exceptions The exceptions to bundle.
* @param array<string, string|string[]> $headers
* @param array<array-key, mixed> $other
*/
public function __construct(
private array $exceptions,
Expand Down
5 changes: 4 additions & 1 deletion src/Exception/DuplicateResourceException.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
class DuplicateResourceException extends HttpException
{
/**
* @param mixed $resourceIdentifier The duplicate resource identifier.
* @param scalar|\Stringable|null $resourceIdentifier The duplicate resource identifier.
* @param array<string, string|string[]> $headers
* @param array<array-key, mixed> $other
*/
public function __construct(
TranslatableInterface|string $message,
Expand All @@ -24,6 +26,7 @@ public function __construct(
$resourceIdentifier = (string) $resourceIdentifier;
}

// @phpstan-ignore-next-line function.alreadyNarrowedType
if (null !== $resourceIdentifier && !\is_scalar($resourceIdentifier)) {
throw new \InvalidArgumentException('The $resourceIdentifier must have a scalar value.');
}
Expand Down
23 changes: 14 additions & 9 deletions src/Exception/HttpException.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ class HttpException extends \Exception implements HttpExceptionInterface
protected ?TranslatableInterface $translatable = null;

/**
* @param TranslatableInterface|string $message The Exception message to throw.
* @param int $code [optional] The Exception code.
* @param \Throwable|null $previous [optional] The previous throwable used for the exception chaining.
* @param string|null $cause [optional] The error cause.
* @param array $headers [optional] Additional http response headers.
* @param array $other [optional] Additional error parameters.
* @param bool $isLoggable [optional] Whether the exception should be logged.
* @param string $logLevel [optional] The desired log level.
* @param TranslatableInterface|string $message The Exception message to throw.
* @param int $code [optional] The Exception code.
* @param \Throwable|null $previous [optional] The previous throwable used for the exception chaining.
* @param string|null $cause [optional] The error cause.
* @param array<string, string|string[]> $headers [optional] Additional http response headers.
* @param array<array-key, mixed> $other [optional] Additional error parameters.
* @param bool $isLoggable [optional] Whether the exception should be logged.
* @param string $logLevel [optional] The desired log level.
*/
public function __construct(
TranslatableInterface|string $message,
Expand Down Expand Up @@ -80,7 +80,9 @@ public function getType(): string
}

/**
* Get the extra data.
* The extra data.
*
* @return array<array-key, mixed>
*/
public function getOther(): array
{
Expand All @@ -92,6 +94,9 @@ public function getStatusCode(): int
return $this->code;
}

/**
* @return array<string, string|string[]>
*/
public function getHeaders(): array
{
return $this->headers;
Expand Down
6 changes: 3 additions & 3 deletions src/Response/ApiResponseFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ public function __construct(
/**
* Create an API response.
*
* @param ApiResponseDto $apiResponseDto The ApiResponse DTO object.
* @param array $headers [optional] An array of headers that will be added to the response.
* @param array $context [optional] The serialization context.
* @param ApiResponseDto $apiResponseDto The ApiResponse DTO object.
* @param array<string, string|string[]> $headers [optional] An array of headers that will be added to the response.
* @param array<array-key, mixed> $context [optional] The serialization context.
*/
public function createApiResponse(ApiResponseDto $apiResponseDto, array $headers = [], array $context = []): Response
{
Expand Down
1 change: 1 addition & 0 deletions src/SBSEDVResponseBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public function configure(DefinitionConfigurator $definition): void
$definition->import('../config/definitions/*.php');
}

// @phpstan-ignore-next-line missingType.iterableValue
public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
{
if ($config['exception_normalizer'] === true) {
Expand Down
8 changes: 7 additions & 1 deletion src/Serializer/Normalizer/ApiResponseErrorNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ public function __construct(
}

/**
* @param ApiResponseErrorDto $object
* @param ApiResponseErrorDto $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand All @@ -43,6 +46,9 @@ public function normalize(mixed $object, ?string $format = null, array $context
return $error;
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof ApiResponseErrorDto;
Expand Down
8 changes: 7 additions & 1 deletion src/Serializer/Normalizer/ApiResponseNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ public function __construct(
}

/**
* @param ApiResponseDto $object
* @param ApiResponseDto $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand All @@ -38,6 +41,9 @@ public function normalize(mixed $object, ?string $format = null, array $context
];
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof ApiResponseDto;
Expand Down
10 changes: 8 additions & 2 deletions src/Serializer/Normalizer/HttpExceptionNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ class HttpExceptionNormalizer implements NormalizerInterface, NormalizerAwareInt
use NormalizerAwareTrait;

/**
* @param FlattenException $object
* @param FlattenException $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand All @@ -44,10 +47,13 @@ public function normalize(mixed $object, ?string $format = null, array $context

$response = new ApiResponseDto($message, null, $errors, $object->getStatusCode());

// @phpstan-ignore-next-line
// @phpstan-ignore-next-line return.type
return $this->normalizer->normalize($response, $format, $context);
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof FlattenException && isset($context['exception']) && $context['exception'] instanceof HttpException;
Expand Down
8 changes: 7 additions & 1 deletion src/Serializer/Normalizer/LinkCollectionNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ class LinkCollectionNormalizer implements NormalizerInterface, NormalizerAwareIn
use NormalizerAwareTrait;

/**
* @param LinkCollection $object
* @param LinkCollection $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand All @@ -25,6 +28,9 @@ public function normalize(mixed $object, ?string $format = null, array $context
return $data;
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof LinkCollection;
Expand Down
8 changes: 7 additions & 1 deletion src/Serializer/Normalizer/LinkNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ public function __construct(
}

/**
* @param Link $object
* @param Link $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand All @@ -27,6 +30,9 @@ public function normalize(mixed $object, ?string $format = null, array $context
return [...$object->other, 'href' => $href];
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof Link;
Expand Down
10 changes: 8 additions & 2 deletions src/Serializer/Normalizer/ProblemNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ public function __construct(
}

/**
* @param FlattenException $object
* @param FlattenException $object
* @param array<array-key, mixed> $context
*
* @return array<string, mixed>
*/
public function normalize(mixed $object, ?string $format = null, array $context = []): array
{
Expand Down Expand Up @@ -61,10 +64,13 @@ public function normalize(mixed $object, ?string $format = null, array $context

$response = new ApiResponseDto($msg, null, [$error], $object->getStatusCode());

// @phpstan-ignore-next-line
// @phpstan-ignore-next-line return.type
return $this->normalizer->normalize($response, $format, $context);
}

/**
* @param array<array-key, mixed> $context
*/
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
{
return $data instanceof FlattenException && (!($context['exception'] ?? null) instanceof HttpException);
Expand Down