<?php
declare(strict_types=1);
namespace App\Admin\Form\Setting;
use App\Admin\DTO\SettingsDTO;
use App\Shop\Enum\FormNameEnum;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
class SettingEditNumberType extends AbstractType
{
public const NAME = FormNameEnum::SETTING_EDIT;
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add(
$builder->create(
'value',
TextType::class,
[
'empty_data' => '',
'constraints' => array_merge(
[
new NotBlank(),
new Regex(['pattern' => '/^[0-9\.\,]+$/']),
],
$options['value_field_constraints']
),
]
)->addModelTransformer(
new class() implements DataTransformerInterface {
public function transform($value)
{
if (null === $value) {
return null;
}
if (!\is_float($value) && !\is_int($value)) {
throw new TransformationFailedException('Expected either a float or an int.');
}
return (string) $value;
}
public function reverseTransform($value)
{
if (null === $value) {
return null;
}
return (float) str_replace(',', '.', $value);
}
}
)
);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(
[
'data_class' => SettingsDTO::class,
'csrf_protection' => false,
'value_field_constraints' => [],
]
);
$resolver->setAllowedTypes('value_field_constraints', 'array');
}
/** @noinspection PhpMissingParentCallCommonInspection */
public function getBlockPrefix(): string
{
return self::NAME;
}
}
Rector\Symfony\Rector\New_\StringToArrayArgumentProcessRector
In Broker.php line 294:
[PHPStan\ShouldNotHappenException]
Internal error.
Exception trace:
() at /rector/vendor/phpstan/phpstan/src/Broker/Broker.php:294
PHPStan\Broker\Broker->getAnonymousClassReflection() at /rector/vendor/phpstan/phpstan/src/Analyser/Scope.php:1093
PHPStan\Analyser\Scope->resolveType() at /rector/vendor/phpstan/phpstan/src/Analyser/Scope.php:362
PHPStan\Analyser\Scope->getType() at /rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:410
Rector\NodeTypeResolver\NodeTypeResolver->resolveFirstTypes() at /rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:168
Rector\NodeTypeResolver\NodeTypeResolver->resolve() at /rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:144
Rector\NodeTypeResolver\NodeTypeResolver->getTypes() at /rector/packages/NodeTypeResolver/src/NodeTypeResolver.php:118
Rector\NodeTypeResolver\NodeTypeResolver->isType() at /rector/src/Rector/NodeTypeResolverTrait.php:30
Rector\Rector\AbstractRector->isType() at /rector/packages/Symfony/src/Rector/New_/StringToArrayArgumentProcessRector.php:80
Rector\Symfony\Rector\New_\StringToArrayArgumentProcessRector->refactor() at /rector/src/Rector/AbstractRector.php:87
Rector\Rector\AbstractRector->enterNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:123
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:146
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:114
PhpParser\NodeTraverser->traverseNode() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:223
PhpParser\NodeTraverser->traverseArray() at /rector/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:91
PhpParser\NodeTraverser->traverse() at /rector/src/PhpParser/NodeTraverser/RectorNodeTraverser.php:52
Rector\PhpParser\NodeTraverser\RectorNodeTraverser->traverse() at /rector/src/Application/FileProcessor.php:114
Rector\Application\FileProcessor->refactor() at /rector/src/Application/RectorApplication.php:108
Rector\Application\RectorApplication->Rector\Application\{closure}() at /rector/src/Application/RectorApplication.php:137
Rector\Application\RectorApplication->tryCatchWrapper() at /rector/src/Application/RectorApplication.php:109
Rector\Application\RectorApplication->runOnFileInfos() at /rector/src/Console/Command/ProcessCommand.php:154
Rector\Console\Command\ProcessCommand->execute() at /rector/vendor/symfony/console/Command/Command.php:255
Symfony\Component\Console\Command\Command->run() at /rector/src/Console/Command/AbstractCommand.php:32
Rector\Console\Command\AbstractCommand->run() at /rector/vendor/symfony/console/Application.php:939
Symfony\Component\Console\Application->doRunCommand() at /rector/vendor/symfony/console/Application.php:273
Symfony\Component\Console\Application->doRun() at /rector/src/Console/Application.php:92
Rector\Console\Application->doRun() at /rector/vendor/symfony/console/Application.php:149
Symfony\Component\Console\Application->run() at /rector/bin/rector:24
Running with
-vvvmakes me think it's related toRector\Symfony\Rector\New_\StringToArrayArgumentProcessRector. When I comment out the part with the anonymous class the error is gone.Class causing an error:
Exception trace: