From bed925a319c12424b29ad5ee0498c349d3f89287 Mon Sep 17 00:00:00 2001 From: Dominic Tubach Date: Thu, 11 Sep 2025 15:23:48 +0200 Subject: [PATCH] Fix phpstan errors --- phpstan.neon.dist | 2 ++ src/Form/AbstractJsonFormsForm.php | 11 +++++++---- src/Form/Control/Callbacks/ArrayCallbacks.php | 1 + src/Form/Control/SelectArrayFactory.php | 1 - 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 632f1ec..32dd152 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -22,6 +22,8 @@ parameters: ignoreErrors: # Note paths are prefixed with ""*/" to wirk with inspections in PHPStorm because of: # https://youtrack.jetbrains.com/issue/WI-63891/PHPStan-ignoreErrors-configuration-isnt-working-with-inspections + # Happens in classes implementing ContainerInjectionInterface::create() + - '/ constructor expects [^\s]+, object(\|null)? given.$/' # Wrong phpdoc type hint in Drupal - '/^Parameter #1 \$key of method Drupal\\Core\\Form\\FormStateInterface::hasTemporaryValue\(\) expects string, array given.$/' - diff --git a/src/Form/AbstractJsonFormsForm.php b/src/Form/AbstractJsonFormsForm.php index e9b5fdd..9a6ccc6 100644 --- a/src/Form/AbstractJsonFormsForm.php +++ b/src/Form/AbstractJsonFormsForm.php @@ -62,8 +62,11 @@ abstract class AbstractJsonFormsForm extends FormBase { * @return static */ public static function create(ContainerInterface $container) { - return new static($container->get(FormArrayFactoryInterface::class), - $container->get(FormValidatorInterface::class), $container->get(FormValidationMapperInterface::class)); + return new static( + $container->get(FormArrayFactoryInterface::class), + $container->get(FormValidatorInterface::class), + $container->get(FormValidationMapperInterface::class) + ); } public function __construct( @@ -260,7 +263,7 @@ protected function doGetSubmittedData(FormStateInterface $formState): array { * * phpcs:disable Generic.Files.LineLength.TooLong */ - private function determineLimitValidationErrors(FormStateInterface &$formState): ?array { + private function determineLimitValidationErrors(FormStateInterface $formState): ?array { // While this element is being validated, it may be desired that some // calls to \Drupal\Core\Form\FormStateInterface::setErrorByName() be // suppressed and not result in a form error, so that a button that @@ -284,7 +287,7 @@ private function determineLimitValidationErrors(FormStateInterface &$formState): // setting the #limit_validation_errors property. For button element // types, #limit_validation_errors defaults to FALSE, so that full // validation is their default behavior. - elseif ($triggering_element && !isset($triggering_element['#limit_validation_errors']) && !$formState->isSubmitted()) { + elseif (NULL !== $triggering_element && !isset($triggering_element['#limit_validation_errors']) && !$formState->isSubmitted()) { return []; } // As an extra security measure, explicitly turn off error suppression if diff --git a/src/Form/Control/Callbacks/ArrayCallbacks.php b/src/Form/Control/Callbacks/ArrayCallbacks.php index a0790e7..73bd123 100644 --- a/src/Form/Control/Callbacks/ArrayCallbacks.php +++ b/src/Form/Control/Callbacks/ArrayCallbacks.php @@ -188,6 +188,7 @@ public static function removeItem(array &$form, FormStateInterface $formState): private static function &getArrayForm(array &$form, array $triggeringElement): array { $arrayParents = $triggeringElement['#array_parents']; Assertion::isArray($arrayParents); + /** @var list $arrayParents */ $propertyPath = $triggeringElement['#_controlPropertyPath']; Assertion::isArray($propertyPath); diff --git a/src/Form/Control/SelectArrayFactory.php b/src/Form/Control/SelectArrayFactory.php index 041161c..fd28632 100644 --- a/src/Form/Control/SelectArrayFactory.php +++ b/src/Form/Control/SelectArrayFactory.php @@ -61,7 +61,6 @@ public function createFormArray( if (!$definition->isRequired()) { $form['#empty_value'] = ''; } - // @phpstan-ignore offsetAccess.nonOffsetAccessible if (isset($form['#options']['']) && '' !== $form['#options']['']) { $form['#empty_option'] = $form['#options']['']; }