在我的代码库上运行 PHPStan 时出现错误:
Parameter #2 $credentials of class Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken constructor expects string, null given.
这是因为构造函数的 docblock 仅将字符串指定为有效类型。但是当您检查该eraseCredentials()
方法时,它似乎null
也是$credentials
.
现在我想指示 PHPStan$credentials
参数的类型string|null
与string
.
我想我需要一个实现MethodsClassReflectionExtension
来做到这一点。但是当我注册它时,它似乎并没有被要求选择正确的课程。
我目前的实现:
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();
}
}
我需要做什么才能使 PHPStan 了解该$credentials
属性同时接受string
和null
值?