False positive when an entity's property gets changed by a form inside an if
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
Línea de trabajo
Start with the PHP reproduction in the issue, focusing on the form creation and handleRequest calls inside the conditional. Reproduce the false-positive report and trace the analysis of the later $user->getOk() condition; done means the condition is no longer reported as always false after the form may change the entity.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I guess the title doesn't really say it all ;-)
So let me show you what I have:
foreach($users as $user)
{
// If the user is not OK yet, generate the form to edit the user:
if (false === $user->getOk()) {
$form[$user->getId()] = $this->get('form.factory')->createNamed('form' . $user->getId(), UserType::class, $user);
$form[$user->getId()]->handleRequest($request);
if ($form[$user->getId()]->isSubmitted() and $form[$user->getId()]->isValid())
{
$entityManager->persist($user);
$entityManager->flush();
// Here phpstan reports "If condition is always false.", cause it obviously remembers the `if` from above
// and doesn't see that `$user->ok` could have been changed by the form meanwhile
if ($user->getOk()) {
$this->addFlash('success', 'User is now OK');
}
}
}
}
- Lenguaje dominante
- PHP
- Estrellas
- 805
- Forks
- 104
- Merge medio
- 27 min
- PR fusionados (30 d)
- 3
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de phpstan/phpstan-symfony
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
phpstan/phpstan-symfony#510 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
phpstan/phpstan-symfony#494 · 5 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
phpstan/phpstan-symfony#268 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
phpstan/phpstan-symfony#509 · 2 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
phpstan/phpstan-symfony#466 · 4 comentarios ·
Todos los issues de phpstan/phpstan-symfony
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
extension/Commercial needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
crazy-goat/rabbit-stream#753 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
opensourcepos/opensourcepos#4743 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
OpenConext/OpenConext-engineblock#2129 ·
Los mantenedores suelen responder en 3 días