Lors de l'exécution PHPStan sur mon codebase je reçois l'erreur:PHPStan - modifier le type de paramètre constructeur
Parameter #2 $credentials of class Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken constructor expects string, null given.
En effet, spécifie uniquement une chaîne de docblock du constructeur de type comme valide. Mais quand vous vérifiez la méthode eraseCredentials()
, il semble que null
est également une valeur valide pour $credentials
.
Maintenant, je veux demander PHPStan que le type du paramètre $credentials
est string|null
par opposition à string
.
Je pense que j'aurais besoin d'une implémentation de MethodsClassReflectionExtension
pour le faire. Mais quand je l'enregistre, il ne semble pas être appelé pour la bonne classe.
Ma mise en œuvre actuelle:
class UsernamePasswordToken implements MethodsClassReflectionExtension
{
public function hasMethod(ClassReflection $classReflection, string $methodName): bool
{
if ($classReflection->getName()===\Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::class) {
var_dump(__FILE__ . ':' . __LINE__ . ' :: ' . __METHOD__);die();
}
if ($methodName === '__construct' && $classReflection->getName() === UsernamePasswordTokenClass::class) {
return true;
}
return false;
}
public function getMethod(ClassReflection $classReflection, string $methodName): MethodReflection
{
var_dump(__FILE__ . ':' . __LINE__ . ' :: ' . __METHOD__);die();
}
}
Que dois-je faire pour PHPStan comprendre que la propriété $credentials
accepte les string
et null
valeurs?
Apparemment j'avais une ancienne version de 'symfony/security-core'. Je l'ai mis à jour et maintenant cette erreur est partie. J'ai encore plusieurs cas de ce problème à gauche. J'ai ajouté ignorer les règles pour ces cas. –